2

目的: Google カレンダーのイベントをローカルの Android カレンダーと同期する同期アダプターを作成する (サーバーからデバイス - 一方向のみ)。アンドロイド版:フロヨ

デバッグ手順:

  1. 過去の非定期的なイベント (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 日先に設定されます。たとえば、今日が 10 月 19 日である場合、カレンダー エントリを作成し、カレンダー アジェンダ アクティビティ セット mininstance= にアクセスします。 19-Oct (ミリ秒) および maxinstance=26-O​​ct (ミリ秒)。
  2. 上記のステップ 3 で、コンテンツ プロバイダーがイベントを挿入するときに、mininstance 値と maxinstance 値を調べて、指定されたイベントのインスタンスを展開し、インスタンス テーブルに挿入します。イベントの開始時刻が mininstance 値より前であるため (イベントが 1 か月前であるため)、コンテンツ プロバイダーは対応するインスタンス エントリを作成しません。

コードから calendarmetadata とインスタンス テーブルに直接書き込むことができない場合、froyo バージョンの Android デバイスで古いイベントをローカル カレンダーと同期するにはどうすればよいですか?

4

0 に答える 0