Android Calendar Provider不返回最新数据

时间:2020-04-03 13:17:37

标签: android google-calendar-api android-calendar android-contentresolver

我正在使用以下代码:

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吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您是对的。由于某些原因,无论是错误还是“功能”-过去4-5个月内,Google日历提供程序都不会通过CalendarContract公开更改,直到它们与服务器同步后。

在不是这样之前,所有更改都可以通过CalendarContract立即用于第三方应用程序-现在仅在同步之后。这很烦人...除非您在Google日历应用中手动执行同步,否则您永远都不知道自己是否有新数据(或者您可以等到自动同步触发器-可能在几秒钟,几分钟或几小时之内,但不在您的计算机中手)。

如此愚蠢,愚蠢的变化。经典Google。他们已经搞砸了很多事情,这只是另一件事。它们只是使开发人员的生活复杂化。

答案 1 :(得分:0)

要在将事件添加到日历后获取最新数据,可以监听日历以进行事件更改