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!

+0

你是如何解决这个问题的?谷歌是否意识到这一点? – 2013-06-08 05:32:16

+0

@ChristopherMasser嗨克里斯托弗,我确实解决了这个问题。回复晚了非常抱歉。在答案中查看我的解决方案。 – 2013-06-11 07:10:02

原来是由于我的错误。当我的SyncAdapter将日历添加到数据库时,我没有正确设置字段SYNC_EVENTShttp://developer.android.com/reference/android/provider/CalendarContract.CalendarColumns.html#SYNC_EVENTS)。具体而言,该字段应设置为1

这是很难知道,这是问题,因为我仍然能够在技术上“同步”(推送事件到服务器,并拉离服务器的事件),但我只是运行到我的活动消失的问题。

我希望这可以帮助别人。