Android,Listener / Observer /回调日历事件更改

时间:2015-06-07 08:04:07

标签: android calendar android-calendar android-cursorloader contentobserver

我正在编写一个应用程序,需要知道在日历中添加/删除/更改会议的时间。
我知道如何使用日历uri上的CursorLoader从日历中获取所有数据。
我也知道如何使用ContentObserver收听日历更改。

问题是ContentObserver.onChange(boolean selfChange, Uri uri)不提供有关已更改事件的信息。因此,让我知道更改的唯一方法是使用CursorLoader再次加载整个日历(或部分日历)并将旧版本与新版本进行比较。

有没有办法在日历上“注册更改”并接收已更改的事件?

2 个答案:

答案 0 :(得分:3)

不幸的是,没有这样的选择。我甚至远远地反映了那个Intent附带的整个Bundle - 没什么。恕我直言,Android API的一些表面非常缺乏,我想这只是其中一个实例。

答案 1 :(得分:0)

手动编辑事件后的每个事件都设置CalendarContract.DIRTY = 1(用于指示存在本地,未同步的更改)。找到这些事件。不要忘记在同步后重置此标志(等于0)。