Ответ 1
Вот как вы можете изменить событие. Пусть говорят, что его ID - eventID:
public void updateEvent(int eventID)
{
ContentResolver cr = context.getContentResolver();
Uri eventUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventID);
ContentValues event = new ContentValues();
event.put(CalendarContract.Events.TITLE, "new title");
event.put(CalendarContract.Events.DESCRIPTION, "My cool event!");
cr.update(eventUri, event, null, null);
}
Чтобы удалить событие, у вас есть две возможности:
Если вы являетесь стандартным приложением: Используйте предыдущий код и замените все event.put на это:
event.put(CalendarContract.Events.DELETED, 1);
Если вы являетесь SyncAdapter календаря и хотите действительно удалить (предыдущий метод просто говорит, что событие должно быть удалено, а следующее, которое следует за ним, должно использоваться после синхронизации календаря:
public deleteEvent(Uri eventUri)
{
cr.delete(event, null, null);
}
Где eventUri - это Uri события, полученного как показано ранее из идентификатора события.
Для всех предыдущих методов, если вы получаете исключение из-за отсутствия адаптера синхронизации, вы можете использовать это:
public static Uri asSyncAdapter(Uri uri, String account, String accountType)
{
return uri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, account)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType)
.build();
}
Надеюсь, это поможет вам.
Источник: персональный код + http://developer.android.com/guide/topics/providers/calendar-provider.html