Arthur
Arthur

Reputation: 8129

How to delete a calendar entry?

I'm trying to implement my first android Program. It should write calendar entries (I know, not the best task to begin programming Andorid).

I've tried:

Uri CALENDAR_URI = Uri.parse("content://calendar/events");
ContentResolver cr = getContentResolver();
cr.delete(CALENDAR_URI, null, null); // Delete all
cr.delete(CALENDAR_URI, "calendar_id=1", null); // Delete all in default calendar
cr.delete(CALENDAR_URI, "_id=1", null); // Delete specific entry

Nothing worked. I allays get a "cannot delete that URL".

Inserting an Calendar Entry was simple:

ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put("title", this.title);
values.put("allDay", this.allDay);
values.put("dtstart", this.dtstart.toMillis(false));
values.put("dtend", this.dtend.toMillis(false));
values.put("description", this.description);
values.put("eventLocation", this.eventLocation);
values.put("visibility", this.visibility);
values.put("hasAlarm", this.hasAlarm);

cr.insert(CALENDAR_URI, values);

According to my insert method accessing the calendar worked.

Thanks, Arthur!

Upvotes: 2

Views: 3950

Answers (2)

Arthur
Arthur

Reputation: 8129

OK, one thing I didn't try:

Uri CALENDAR_URI = Uri.parse("content://calendar/events");
int id = 1; // calendar entry ID
Uri uri = ContentUris.withAppendedId(CALENDAR_URI, id);
cr.delete(uri, null, null);

This is what I was missing:

Uri uri = ContentUris.withAppendedId(CALENDAR_URI, id);

should lead to content://calendar/events/1

Now my Calendar is empty :-)

Upvotes: 8

CommonsWare
CommonsWare

Reputation: 1006584

The right way to delete things out of a user's calendar is to use the appropriate GData APIs and delete it from their Google Calendar. Manipulating the Calendar application's content provider -- as you are trying to do -- is not part of the public API.

Upvotes: 1

Related Questions