gpt4 book ai didi

android - 如果 native 联系人应用程序中的任何联系人发生变化,Truecaller、Messenger 等应用程序如何与 native 联系人应用程序保持同步

转载 作者:行者123 更新时间:2023-11-29 23:07:13 28 4
gpt4 key购买 nike

我观察到如果我们更新/删除 native 联系人应用程序中的联系人,相同的更改会立即反射(reflect)到 TrueCaller 中。

我可以想到两种获取更改的方法:

  1. 它通过删除应用程序中的所有现有条目来刷新整个联系人列表,并在每次应用程序进入前台时使用联系人提供程序从 native 联系人查询所有条目。但是这种方法可能涉及在每次启动时查询 RawContact 表和数据表. (这在计算方面可能成本很高)
  2. 每个原始联系人维护 VERSION如果通过 native 应用程序对原始联系人进行任何更改,则该值会增加。这可以用于修改,但需要在 truecaller(或类似应用程序)中维护旧值,以便我们进行比较。这种方法仍然需要您查询 RawContacts 表。

后一种方法还需要在 TrueCaller 应用数据库中维护版本

需要执行以下操作来检测任何更改:

  1. 查看TrueCaller中raw contact的版本,如果低于native contacts db中raw contact的版本,则查询对应的Data表是否有变化。
  2. 如果任何原始联系人从 native 中删除,那么它要么从 RawContact 表中删除,要么标记为已删除。因此,我们需要检查 Deleted 标志,或者 RawContact 表中是否缺少任何先前的 RawContact 条目。
  3. 其他情况,例如添加了新联系人,因此将在 RawContact 表中找到新的原始联系人条目等。

如果在原生应用中进行增删改查等操作,有没有更好的方法在应用中导入联系人并保持适当的同步?

当然,像 TrueCaller 这样的应用程序在这方面做得很好。任何关于导入联系人等任何相关来源的文章将不胜感激。

最佳答案

由于诸如 TrueCaller 之类的应用程序是封闭源代码,因此无法给您明确的答案,但是选项 2 将是我管理与设备联系人同步的做法。

您可以在 ContactsContract ContentProvider 上添加 ContentObserver ,它会在发生变化时调用您的代码,以便您可以运行建议的代码选项 2,但请注意联系人往往会非常非常频繁地更改,因此如果需要每天一次以防止占用电池/CPU,我会限制此类后台同步。

关于android - 如果 native 联系人应用程序中的任何联系人发生变化,Truecaller、Messenger 等应用程序如何与 native 联系人应用程序保持同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56406469/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com