2017-07-17 30 views
0

我有一個應用程序獲取設備上聯繫人的ContactsContract.Contacts.LOOKUP_KEY並將其保存在應用程序Db上。如何唯一標識ContactsContract.Contacts表上的聯繫人

閱讀this頁面後,我想我可以使用LOOKUP_KEY唯一標識一個聯繫人,即使在編輯聯繫人時(例如在編輯聯繫人姓名之後)。

事實上,我看到編輯聯繫人後,其LOOKUP_KEY發生了變化,所以我不能再使用我保存在我的應用程序數據庫中的LOOKUP_KEY

我的問題是:有沒有一種方法可以唯一識別ContactsContract.Contacts上的聯繫人,從何時在設備上首次創建聯繫人,直到它從設備中刪除?

謝謝

回答

1

A LOOKUP_KEY不是用來作爲一個關鍵,它應該與聯繫人的_ID一起使用,形成一個完整的lookupUri

然後lookupUri可用於在CONTENT_LOOKUP_URI表中找到聯繫人。 的CONTENT_LOOKUP_URI基本上首先_ID查找聯繫人,如果沒有找到它,或_ID似乎是錯誤的聯繫,它使用提示LOOKUP_KEY部分,試圖追查你正確的聯繫。

CONTENT_LOOKUP_URI

內容://風格URI這個表應該用於創建 快捷方式或以其他方式建立長期的聯繫來聯繫。這個URI 應該總是後跟一個「/」和聯繫人的LOOKUP_KEY。它 可以有選擇地也有一個「/」和最後已知的聯繫人ID後附加 。這種「完整」格式是一個重要的優化,強烈推薦使用 。

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

查找鍵應該附加未編碼 - 它存儲在已編碼的 表單中,可以在URI中使用。

getLookupUri(long contactId, String lookupKey)

建立CONTENT_LOOKUP_URI使用給定_ID和 LOOKUP_KEY查找URI。

LOOKUP_KEY

包含提示如何,如果其 行ID變更爲同步或聚集的結果發現接觸的不透明值。

+0

我明白了。謝謝你,兄弟 :) – MDP

1

行ID(主鍵)爲每個聯繫人叫_ID

+0

謝謝你:) – MDP

相關問題