目标:编写一个同步适配器,将 Google 日历事件与本地 android 日历同步(服务器到设备 - 仅一种方式)。安卓版本:Froyo
调试步骤:
- 从 Google 日历中读取过去的非重复事件(一个月前)
- 我将它本地插入到 android 日历中(我创建的日历条目)
- 事件已成功插入事件表中,但未创建实例表中的相应条目
- 我将 calendarmetadata 表值更新为 mininstance=0 和 maxinstance="event's end date in millis"(在命令提示符下通过 sqlite3 工具)
- 我再次尝试在本地插入相同的事件
- 这次事件成功插入到事件表中,并且实例表中的相应条目也被创建
查看 CalendarProvider.java 和 Calendar.java 源代码并进一步探索发现以下内容:
- 在 Calendars 表中插入一行后,mininstance 设置为今天的日期,maxinstance 设置为未来 7 或 15 天,例如,如果今天是 19 月 19 日,则创建一个日历条目并访问日历议程活动集 mininstance= 19-Oct(以毫秒为单位)和 maxinstance=26-Oct(以毫秒为单位)。
- 在上面的第 3 步中,当内容提供者插入一个事件时,它会查看 mininstance 和 maxinstance 值以在实例表中扩展和插入给定事件的实例。由于事件开始时间早于 mininstance 值(因为事件是一个月大),内容提供者不会创建相应的实例条目。
鉴于我无法从我的代码直接写入 calendarmetadata 和实例表,如何将旧事件与我在 android 设备上的本地日历同步以获取 froyo 版本?