【发布时间】:2020-04-03 13:17:37
【问题描述】:
我正在使用以下代码:
String selection = "((dtstart >= " + now
+ ") AND (dtend <= " + endTime.getTimeInMillis() + "))";
Cursor cursor = context.getContentResolver()
.query(Uri.*parse*("content://com.android.calendar/events"),
*PROJECTION*, selection,null, null);
而且我注意到,一旦我将Event 添加/删除到设备上的 Google 日历应用程序并立即运行上述代码,有时我无法从 Cursor 获取最新数据集。我必须手动刷新 Google 日历应用才能获取最新数据。
我错过了什么吗?我可以使用其他一些 API 吗?
谢谢!
【问题讨论】:
-
“我错过了什么吗?” -- Google 日历应用程序的行为取决于其开发人员。他们不需要更新该提供程序,更不用说在某些特定时间范围内更新了。就此而言,他们不需要在特定时间范围内更新自己的服务器。如果他们选择缓冲和推迟更新他们的 Web 服务,那就是他们的决定。
-
@CommonsWare
CalendarProvider的文档是否说明数据可能不是最新的? -
AFAIK,
CalendarProvider的文档没有就其内容的新鲜度做出任何声明。甚至不需要任何日历应用程序使用CalendarProvider。他们可以使用自己的数据库、服务器或其他任何东西来代替CalendarProvider。现在,在理想情况下,Google 日历会快速更新CalendarProvider。我认为可以肯定地说这不是一个理想的世界。 :-( 我的意思是,您正在对特定应用程序的行为做出假设,而这些实际上是更多的希望和梦想。 -
@CommonsWare 那么在这种情况下推荐的方法是什么。如果可能的话,我想避免使用谷歌登录。
-
@CommonsWare 我想一个更好的问题是,
CalendarAPI 与CalendarProvider之间有什么区别。
标签: android google-calendar-api android-calendar android-contentresolver