【问题标题】:Android: Reacting to Contact MergeAndroid:对联系人合并做出反应
【发布时间】:2012-08-23 18:20:43
【问题描述】:

我正在开发一款适用于 Android 的应用,并且需要存储联系人 ID,以便跟踪要在应用中使用的联系人子集。我目前将 ID 存储在本地使用的表中,但如果联系人与其他联系人合并(用于表示合并联系人的 ID 经常更改),则此表会变得不一致。保持一致性的最佳方法是什么?

我的想法:

  • 如果广播了某种意图或系统事件,那么我可以监听它。

  • 如果旧 ID 和新 ID 之间的映射保存在某处(ContactsContract.RawContacts?),那么只要我检测到某个 ID 不再有效,我就可以刷新该字段。

  • 使用内容观察器运行后台进程并观察变化。如果可能,我想避免这种情况。

这个问题似乎解决了类似的问题,但用于添加而不是合并联系人:Reacting to new contacts in Android Contacts application

欢迎提出任何想法!

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    存储联系人查找 URI(作为字符串)。此 URI 是从 _id 以及联系人 lookup_key 创建的。这两个可以通过调用 ContactsContract.getLookupUri() 来构建查找 URI。您可以通过调用 ContactsContract.lookupContact() 并查询 CONTENT_URI 或直接使用查找 URI 查询 CONTENT_LOOKUP_URI 来查找联系人。 Android 文档对 CONTENT_LOOKUP_URI 这么说:

    此表的 content:// 样式 URI,应用于创建快捷方式或创建 长期 到联系人的链接。此 URI 后应始终跟一个“/”和联系人的 LOOKUP_KEY。它还可以选择附加一个“/”和最后一个已知的联系人 ID。这种“完整”格式是一项重要的优化,强烈推荐。

    只要联系人的行 ID 保持不变,此 URI 就等同于 CONTENT_URI。 如果联系人的行 ID 由于同步或聚合而发生更改,则此 URI 将使用间接信息(同步 ID 或组成原始联系人)查找联系人

    查找键应附加未编码 - 它以编码形式存储,准备在 URI 中使用。

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 2012-09-02
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2023-03-14
      • 2021-01-06
      相关资源
      最近更新 更多