[英]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.