2012-08-23 13 views
1

我正在爲Android開發應用程序,並且需要存儲聯繫人ID以跟蹤在應用程序中使用的聯繫人子集。我目前將ID存儲在本地使用的表中,但是如果聯繫人與其他聯繫人合併(用於表示合併聯繫人的ID通常會更改),則此表變得不一致。保持一致性的最佳方法是什麼?Android:對聯繫人合併作出反應

我的想法:

  • 如果有某種意圖或系統事件被廣播然後我可以聽那個。

  • 如果舊ID和新ID之間的映射保留在某處(ContactsContract.RawContacts?),那麼只要檢測到ID不再有效,就可以刷新該字段。

  • 與內容觀察者運行後臺進程並監視更改。如果可能,我想避免這種情況。

這個問題似乎解決了類似的問題,但是用於添加而不是合併聯繫人:Reacting to new contacts in Android Contacts application

任何和所有的想法歡迎!

回答

0

存儲聯繫人查找URI(作爲字符串)。該URI是從_id以及聯繫人lookup_key創建的。這兩個可以通過調用ContactsContract.getLookupUri()來構建查找URI。您可以通過調用ContactsContract.lookupContact()查詢聯繫人並查詢CONTENT_URI或通過查詢URI直接查詢CONTENT_LOOKUP_URI。 Android的文檔說這有關CONTENT_LOOKUP_URI:

內容://風格URI這個表應該用於創建快捷方式或以其他方式創建長期鏈接到聯繫人。該URI後面應始終加上「/」和聯繫人的LOOKUP_KEY。在此之後,它可以選擇性地附加一個「/」和最後一個已知的聯繫人ID。這種「完整」的格式是一個重要的優化,強烈建議。

只要聯繫人的行ID保持不變,該URI就等同於CONTENT_URI。 如果聯繫人的行ID由於同步或聚合而發生更改,則此URI將使用間接信息(同步ID或組成原始聯繫人)查找聯繫人。

查找鍵應該附加unncoded - 它以編碼形式存儲,可以在URI中使用。

相關問題