【问题标题】:What is the best way to sync contact names to calendar event description将联系人姓名同步到日历事件描述的最佳方法是什么
【发布时间】:2025-12-15 12:30:01
【问题描述】:

我的应用程序创建日历事件,其中事件的描述中有一个联系人姓名。 当用户使用电话的联系人更改联系人姓名时,我希望更改流向日历事件的描述字段。

最好的方法是什么?

我可以想到两种选择。两者都包括我自己的数据库中的联系人姓名的副本。当发生变化时,查找记录发生变化的记录并更新日历事件。

问题是如何有效地将新名称移动到我的数据库中。

  1. 在联系人上注册内容观察员并比较所有联系人姓名。
  2. 使用同步适配器

哪种方法真的更有效?

我不熟悉同步适配器,但我假设适配器不需要帐户(有这样的事情吗?),我希望更改立即生效(即不在下一个计划同步时)

非常感谢任何帮助,包括完全不同的方向。

【问题讨论】:

    标签: android android-syncadapter contentobserver


    【解决方案1】:

    SyncAdapter 绝对需要一个帐户。 make the system recognize them 的唯一方法是使用 ContentResovler 和 AndroidManifest.xml 中的一些 xml 资源将它们与 Account / ContentAuthority 映射相关联。

    我想您可以创建自己的无操作帐户和无服务权限并让您的 SyncAdapter 与服务器通信...但如果是这样,您最终会得到与带有计时器调用的服务相同。您不能劫持或与现有的 SyncAdapter 并行工作 - 必须为给定的 ContentAuthority 注册一个且只有一个 SyncAdapter。

    要在一对 ContentProvider 之间交叉填充数据,您需要使用 ContentObserver 和服务来实现。不利的一面是,您需要努力工作才能使您的服务保持活力——在操作系统的高使用率期间,它往往会被杀死。一旦它关闭,您需要找到一种方法来启动它(计时器?),然后手动检查您在服务停止时错过的更改。

    【讨论】:

    • 如何检测对内容进行的操作?比如插入、更新和删除。
    • 检测操作在哪里?在 SyncAdapter 内部?在这种情况下,android 框架在发生时直接进行函数调用。如果您在谈论应用程序,它是 ContentObserver 让您知道特定行或表有新数据。在这种情况下,值得发布自己的问题。
    最近更新 更多