我知道,與聚集接觸_ids不是靜態的,但可能會隨時間而改變,以取得聯繫_ID(參見:Google Group Discussion)。試圖使用電子郵件地址
所以,在我的應用我存儲內容查找關鍵字和所選聯繫人的電流id。
我想要做的是這樣的:當一封郵件從一個特定的電子郵件地址進入時,查詢電話聯繫人並查看電子郵件地址是否與其中任何一個相關聯,然後將該聯繫人與我的存儲進行比較聯繫人,首先使用我存儲的聯繫人_id和查找鍵進行全新查詢以獲取當前聯繫人_id。
這裏是我在嘗試找到使用的電子郵件地址聯繫_id:
String[] projection = {
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts._ID
}
uri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Email.CONTENT_LOOKUP_URI, Uri.encode(data)); //data = email address
cur = resolver.query(uri, projection, null, null, null);
if (cur != null){
while (cur.moveToNext()){
msg.set_contact(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)), cur.getLong(cur.getColumnIndex(ContactsContract.Contacts._ID)));
}
}
上面的代碼工作的,因爲它發現的電子郵件地址與手機上的聯繫人相關聯。
的問題:我想我得到的原始電子郵件地址條目,不是整體接觸的_id的_id。因爲當我刷新我的存儲接觸_id,並將其與上述兩者不匹配什麼返回相比,儘管我已經證實,電子郵件與我存儲的聯繫人相關聯。
這裏是我在找我的存儲聯繫人:
String[] projection = {
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts._ID
}
Uri uri = ContactsContract.Contacts.getLookupUri(contact_id, contact_lookup);
Cursor cur = resolver.query(cLookupUri, projection, null, null, null);
if(cur != null){
while (cur.moveToNext()){
msg.set_contact(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)), cur.getLong(cur.getColumnIndex(ContactsContract.Contacts._ID)));
}
}
我在做什麼錯?基本上,我只是想獲得與輸入電子郵件地址相關聯的任何接觸的CONTACT_ID ...
任何幫助,非常感謝!
你是如何解決的呢?我不明白。 – 2014-12-11 18:05:43