gpt4 book ai didi

Android:像 WhatsApp 一样监听联系人变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:06 25 4
gpt4 key购买 nike

我正在构建一个严重依赖于用户联系人的应用程序。

我已经创建了一个 Account 并在需要时代表该帐户创建了 RawContacts
我使用 SyncAdapter,一切都很好。

但我仍然遗漏了这个谜题的某些部分:

我正在尝试实现类似于 WhatsApp 的行为。这样——

当任何联系人的姓名或电话发生变化时 - 它会被发送到服务器进行评估

这个联系人是否已经存在于“我的”RawContacts中,他是否是用户刚刚创建的。

我知道有 ContentObserver 但跟踪 ContactsContract.Contacts.CONTENT_URI 似乎是错误的做法,因为它没有给出具体的更改,而且它会被引发多次,以及许多我不感兴趣的事件。

我知道 WhatsApp 正在使用 SyncAdapter,但我认为他们可能会做更多的事情。

任何想法将不胜感激。

最佳答案

ContentObserver 跟踪 ContactsContract.Contacts.CONTENT_URI 确实是要走的路。

当您获得 onChange() 时,您可以使用以下条件查询 raw_contacts 表:

String where = "(rawcontacts.dirty = true or rawcontacts.deleted = 1) and rawcontacts.account_type = <your_custom_type>"

结果会给你添加、更新或删除的联系人。

如果您有兴趣了解更多详细信息 - 您需要订阅 ContactsContract.Contacts.CONTENT_URI 的原因是联系人提供程序当前不通知在 onChange() 中修改了哪些联系人。这是因为多个联系人可能会更改的 applyBatch() 事务。将来可能会有一种订阅子集的方法 - 但目前还没有。

关于Android:像 WhatsApp 一样监听联系人变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103016/

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