首页 > 解决方案 > 谷歌日历 API 中的 calendarId、eventId 是否与 android 提供程序 API 相同?

问题描述

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

例如,每次清除日历数据然后同步时,calendarId 和 eventId 值是否会与上一次相同,即持久化?或者它们是否会由提供商在本地重新生成,并带有一些映射到实际谷歌日历中的相应事件?

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

标签: google-calendar-apiandroid-calendar

解决方案


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

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

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

编辑:

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

对于有一个通用 ID 的事件,请参阅iCalUIDUID_2445。这些基本上是相同的字段,我希望它们对于相同的事件具有相同的值。

请注意,即使UID_2445在 Android 上调用了该字段,它也与 RFC 5545 中的字段相同,因为 RFC 5545 是 RFC 2445 的继承者,并且 UID 字段在两个规范中具有相同的含义。


推荐阅读