У меня есть адаптер синхронизации, который обрабатывает синхронизацию календарей и событий. Я могу удалить обычные события нормально. Но всякий раз, когда я удаляю повторяющееся событие, все события в моем календаре исчезают.
Я заметил одну вещь: всякий раз, когда я удаляю повторяющееся событие, таблица Instances
очищается, что объясняет исчезновение событий. Таблица Events
, как и ожидалось, с удаленной строкой повторяющегося события из таблицы.
Чем это вызвано?
Я пробовал удалить одним из следующих способов:
resolver.delete(
ContentUris.withAppendedId(Events.CONTENT_URI, id),
null,
null
);
resolver.delete(
Events.CONTENT_URI,
Events._ID + " = ?",
new String[]{id}
);
А также как SyncAdapter
:
resolver.delete(
Events.CONTENT_URI.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, account.name)
.appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type)
.build(),
Events._ID + " = ?",
new String[]{id}
);
Все методы корректно работают с неповторяющимися событиями, но все они вызывают очистку Instances
таблицы при удалении повторяющегося события.
Обновить
Я заметил одну вещь: LogCat выдает следующую ошибку
- Применение:
system_process
- Тег:
BufferQueue
- PID:
1187
- TID:
1518
[com.android.calendar/com.android.calendar.AllInOneActivity] BufferQueue:drainQueueLocked: timeout waiting on consumer!