使用android日历提供程序,您可以查询事件实例,其中包含calendarId值和eventId值。这些值是否与您直接使用google calendar API查询的值相同?
例如,每次您清除日历数据然后进行同步时,calendarId和eventId的值是否与以前的时间相同,并且保持不变?还是由提供者在本地重新生成它们,并将某些映射返回到实际Google日历中的相应事件?
换句话说,对于给定的用户,对[calendarId,eventId]是有效的持久性UID吗?
答案 0 :(得分:1)
不,他们不一样。 Android日历和事件ID是底层SQLite表中的行ID,每当插入新的日历或事件时,都会自动递增。
查看如何在CalendarDatabaseHelper.java, line 523和CalendarDatabaseHelper.java, line 767中创建事件和日历_ID
列。请注意,对于日历,它没有明确指定AUTOINCREMENT
,但是如果在插入日历时未指定_ID
,则会自动确定(请参见SQLite Autoincrement )。
与Google API ID的任何相似之处纯属巧合。
编辑:
解决有关使用UID标识相同元素的评论:
对于事件,有一个公共ID,请参见iCalUID和UID_2445。这些字段本质上是相同的字段,我希望它们对相同的事件具有相同的值。
请注意,即使该字段在Android上称为UID_2445
,也与RFC 5545中的字段相同,因为RFC 5545是RFC 2445的后继者,而UID字段在两个规范中都具有相同的含义。