我正在使用以下代码:
String selection = "((dtstart >= " + now
+ ") AND (dtend <= " + endTime.getTimeInMillis() + "))";
Cursor cursor = context.getContentResolver()
.query(Uri.*parse*("content://com.android.calendar/events"),
*PROJECTION*, selection,null, null);
我注意到,一旦我在设备上的Google日历应用中添加/删除Event
并立即运行上面的代码,有时我就不会从Cursor
获取最新的数据集。我必须手动刷新Google日历应用程序才能获取最新数据。
我错过了什么吗?我可以使用其他一些API吗?
谢谢!
答案 0 :(得分:1)
您是对的。由于某些原因,无论是错误还是“功能”-过去4-5个月内,Google日历提供程序都不会通过CalendarContract公开更改,直到它们与服务器同步后。
在不是这样之前,所有更改都可以通过CalendarContract立即用于第三方应用程序-现在仅在同步之后。这很烦人...除非您在Google日历应用中手动执行同步,否则您永远都不知道自己是否有新数据(或者您可以等到自动同步触发器-可能在几秒钟,几分钟或几小时之内,但不在您的计算机中手)。
如此愚蠢,愚蠢的变化。经典Google。他们已经搞砸了很多事情,这只是另一件事。它们只是使开发人员的生活复杂化。
答案 1 :(得分:0)
要在将事件添加到日历后获取最新数据,可以监听日历以进行事件更改