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

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

我已经创build了一个Account并在需要时代表这个帐户创buildRawContacts
而且我使用SyncAdapter ,事情很好。

但是我仍然错过了这个难题的一些部分:

我试图实现类似于WhatsApp的行为。 这样 –

当任何联系人的姓名或电话发生变化时,将发送给服务器进行评估

无论此联系人是否已经在“我的” RawContacts ,他是否刚刚由用户创build。

我知道有ContentObserver但跟踪ContactsContract.Contacts.CONTENT_URI似乎是错误的事情要做,因为它没有给出具体的变化,再加上它被提升了很多次,并从许多事件不感兴趣。

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

任何想法将不胜感激。

Solutions Collecting From Web of "Android:听到像WhatsApp这样的联系人更改"

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()事务。 未来可能会有一种方法来订阅一个子集 – 但目前没有。