Android CalendarContract,删除周期性事件会导致所有事件在日历上消失?
问题描述:
我有一个处理同步日历和事件的同步适配器。我能够正常删除正常事件。但是,每当我删除重复发生的事件时,日历上的所有事件都会消失。Android CalendarContract,删除周期性事件会导致所有事件在日历上消失?
我注意到的一件事是,每当我删除一个循环事件,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!
答
原来是由于我的错误。当我的SyncAdapter
将日历添加到数据库时,我没有正确设置字段SYNC_EVENTS
(http://developer.android.com/reference/android/provider/CalendarContract.CalendarColumns.html#SYNC_EVENTS)。具体而言,该字段应设置为1
。
这是很难知道,这是问题,因为我仍然能够在技术上“同步”(推送事件到服务器,并拉离服务器的事件),但我只是运行到我的活动消失的问题。
我希望这可以帮助别人。
你是如何解决这个问题的?谷歌是否意识到这一点? – 2013-06-08 05:32:16
@ChristopherMasser嗨克里斯托弗,我确实解决了这个问题。回复晚了非常抱歉。在答案中查看我的解决方案。 – 2013-06-11 07:10:02