4
  • アプリは CalDAV サーバーに同期します
  • デフォルトの Android カレンダー アプリと SyncAdapter を使用します

私の問題は、SyncAdapter がローカル編集を処理する方法に従っていないことです。

  • SyncAdapter にonPerformSync()は、サーバーからカレンダーとイベントを取得して Android Calendar Provider に保存するロジックがいくつかあります。
  • カレンダーを保存するとき ( )、フラグをカレンダー URIresolver.insert()に追加して、関連するフィールドにサーバー情報を保存できるようにします。CALLER_IS_SYNCADAPTERCalendarContract.Calendars
  • CALLER_IS_SYNCADAPTERイベントを保存するとき、フラグを追加しません。

私が達成したいのは、スケジュールされた(バックグラウンドで実行される)または手動(Androidカレンダーアプリでユーザーが更新を押す)呼び出しonPerformSync()のいずれかであり、デバイスでローカルに編集または削除されたイベントを取得できるようにしたい. 次に、サーバー側の変更をプルしながら、変更をサーバーにプッシュできます。

しかし、イベントやカレンダーはどのようにして または としてマークされるのでしょうDELETEDDIRTY? SyncAdapter カレンダーでイベントを削除するたびに、 を呼び出さずにデータベースからイベントを削除するだけonPerformSync()です。

私は見ました: CALLER_IS_SYNCADAPTERを適切に使用する方法 ですが、まだ完全には理解していません。

4

0 に答える 0