google 日历 API 中的 calendarId、eventId 是否与 android 提供商 API 相同?

are calendarId, eventId in the google calendar API same as android provider API?

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

比如每次清空日历数据再同步,calendarId和eventId的值会不会和上次一样,是否持久化?或者它们会由提供者在本地重新生成,并通过一些映射返回到实际 google 日历中的相应事件?

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

不,它们不一样。 Android 日历和事件 ID 是底层 SQLite 表中的行 ID,并在插入新日历或事件时自动递增。

查看事件和日历_ID 列是如何在 CalendarDatabaseHelper.java, line 523 and CalendarDatabaseHelper.java, line 767. Note that for calendars it doesn't specify AUTOINCREMENT explicitly, but if no _ID is specified when inserting a calendar it's determined automatically (see SQLite Autoincrement ) 中创建的。

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

编辑:

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

对于有通用 ID 的事件,请参阅 iCalUID and UID_2445。这些本质上是相同的字段,我希望它们对相同的事件具有相同的值。

请注意,尽管该字段在 Android 上被称为 UID_2445,但它与 RFC 5545 中的字段相同,因为 RFC 5545 是 RFC 2445 的继承者并且 UID 字段具有相同的含义在两个规格中。