Google Calendar API中的calendarId,eventId与android provider API相同吗?

时间:2018-07-02 23:47:41

标签: google-calendar-api android-calendar

使用android日历提供程序,您可以查询事件实例,其中包含calendarId值和eventId值。这些值是否与您直接使用google calendar API查询的值相同?

例如,每次您清除日历数据然后进行同步时,calendarId和eventId的值是否与以前的时间相同,并且保持不变?还是由提供者在本地重新生成它们,并将某些映射返回到实际Google日历中的相应事件?

换句话说,对于给定的用户,对[calendarId,eventId]是有效的持久性UID吗?

1 个答案:

答案 0 :(得分:1)

不,他们不一样。 Android日历和事件ID是底层SQLite表中的行ID,每当插入新的日历或事件时,都会自动递增。

查看如何在CalendarDatabaseHelper.java, line 523CalendarDatabaseHelper.java, line 767中创建事件和日历_ID列。请注意,对于日历,它没有明确指定AUTOINCREMENT,但是如果在插入日历时未指定_ID,则会自动确定(请参见SQLite Autoincrement )。

与Google API ID的任何相似之处纯属巧合。

编辑:

解决有关使用UID标识相同元素的评论:

对于事件,有一个公共ID,请参见iCalUIDUID_2445。这些字段本质上是相同的字段,我希望它们对相同的事件具有相同的值。

请注意,即使该字段在Android上称为UID_2445,也与RFC 5545中的字段相同,因为RFC 5545是RFC 2445的后继者,而UID字段在两个规范中都具有相同的含义。