繁体   English   中英

Android:听取像WhatsApp这样的联系人更改

[英]Android: Listening to contact changes like WhatsApp do

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

我已经创建了一个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()事务可能会更改多个联系人。 可能在将来会有一种订阅子集的方法 - 但目前没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM