4
  • 应用程序同步到 CalDAV 服务器
  • 使用默认的 Android 日历应用程序和 SyncAdapter

我的问题是我不遵循 SyncAdapter 如何处理本地编辑。

  • 我的 SyncAdapter 中有一些逻辑onPerformSync()可以从服务器中提取日历和事件并将其保存到 Android 日历提供程序。
  • 当我保存日历 ( resolver.insert()) 时,我将标志附加CALLER_IS_SYNCADAPTER到日历 URI,以便我可以将服务器信息存储在相关CalendarContract.Calendars字段中。
  • 当我保存事件时,我不附加CALLER_IS_SYNCADAPTER标志。

我想要实现的是在预定(在后台运行)或手动(用户在 Android 日历应用程序中点击刷新)调用时onPerformSync(),我希望能够获取在设备上本地编辑或删除的任何事件。然后我可以将更改推送到服务器,同时也可以拉下服务器端的更改。

但是事件和日历究竟是如何标记为DELETEDor的DIRTY呢?每当我删除 SyncAdapter 日历上的事件时,它只是将其从数据库中删除,而无需调用onPerformSync().

我看过: 如何正确使用 CALLER_IS_SYNCADAPTER 但我仍然不完全明白。

4

0 回答 0