- アプリは CalDAV サーバーに同期します
- デフォルトの Android カレンダー アプリと SyncAdapter を使用します
私の問題は、SyncAdapter がローカル編集を処理する方法に従っていないことです。
- SyncAdapter に
onPerformSync()
は、サーバーからカレンダーとイベントを取得して Android Calendar Provider に保存するロジックがいくつかあります。 - カレンダーを保存するとき ( )、フラグをカレンダー URI
resolver.insert()
に追加して、関連するフィールドにサーバー情報を保存できるようにします。CALLER_IS_SYNCADAPTER
CalendarContract.Calendars
CALLER_IS_SYNCADAPTER
イベントを保存するとき、フラグを追加しません。
私が達成したいのは、スケジュールされた(バックグラウンドで実行される)または手動(Androidカレンダーアプリでユーザーが更新を押す)呼び出しonPerformSync()
のいずれかであり、デバイスでローカルに編集または削除されたイベントを取得できるようにしたい. 次に、サーバー側の変更をプルしながら、変更をサーバーにプッシュできます。
しかし、イベントやカレンダーはどのようにして または としてマークされるのでしょうDELETED
かDIRTY
? SyncAdapter カレンダーでイベントを削除するたびに、 を呼び出さずにデータベースからイベントを削除するだけonPerformSync()
です。
私は見ました: CALLER_IS_SYNCADAPTERを適切に使用する方法 ですが、まだ完全には理解していません。