2

目标:编写一个同步适配器,将 Google 日历事件与本地 android 日历同步(服务器到设备 - 仅一种方式)。安卓版本:Froyo

调试步骤:

  1. 从 Google 日历中读取过去的非重复事件(一个月前)
  2. 我将它本地插入到 android 日历中(我创建的日历条目)
  3. 事件已成功插入事件表中,但未创建实例表中的相应条目
  4. 我将 calendarmetadata 表值更新为 mininstance=0 和 maxinstance="event's end date in millis"(在命令提示符下通过 sqlite3 工具)
  5. 我再次尝试在本地插入相同的事件
  6. 这次事件成功插入到事件表中,并且实例表中的相应条目也被创建

查看 CalendarProvider.java 和 Calendar.java 源代码并进一步探索发现以下内容:

  1. 在 Calendars 表中插入一行后,mininstance 设置为今天的日期,maxinstance 设置为未来 7 或 15 天,例如,如果今天是 19 月 19 日,则创建一个日历条目并访问日历议程活动集 mininstance= 19-Oct(以毫秒为单位)和 maxinstance=26-O​​ct(以毫秒为单位)。
  2. 在上面的第 3 步中,当内容提供者插入一个事件时,它会查看 mininstance 和 maxinstance 值以在实例表中扩展和插入给定事件的实例。由于事件开始时间早于 mininstance 值(因为事件是一个月大),内容提供者不会创建相应的实例条目。

鉴于我无法从我的代码直接写入 calendarmetadata 和实例表,如何将旧事件与我在 android 设备上的本地日历同步以获取 froyo 版本?

4

0 回答 0