我已經經歷了很多帖子,但沒有找到任何有效或甚至正確回答問題的答案。我最近的是這個How to avoid duplicate contact name (data) while loading contact info to listview?,但是這有太多的開銷。有沒有更簡單或更有效的方法來解決這個問題?Android:在使用ContactsContract.CommonDataKinds.Phone檢索聯繫人時重複聯繫人數據
1
A
回答
8
我有同樣的問題,你有:我得到重複的電話號碼。我通過爲每個光標條目獲得標準化數字並使用HashSet
來跟蹤我已經找到的數字來解決這個問題。試試這個:
private void doSomethingForEachUniquePhoneNumber(Context context) {
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER,
//plus any other properties you wish to query
};
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, null, null, null);
} catch (SecurityException e) {
//SecurityException can be thrown if we don't have the right permissions
}
if (cursor != null) {
try {
HashSet<String> normalizedNumbersAlreadyFound = new HashSet<>();
int indexOfNormalizedNumber = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER);
int indexOfDisplayName = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int indexOfDisplayNumber = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
while (cursor.moveToNext()) {
String normalizedNumber = cursor.getString(indexOfNormalizedNumber);
if (normalizedNumbersAlreadyFound.add(normalizedNumber)) {
String displayName = cursor.getString(indexOfDisplayName);
String displayNumber = cursor.getString(indexOfDisplayNumber);
//haven't seen this number yet: do something with this contact!
} else {
//don't do anything with this contact because we've already found this number
}
}
} finally {
cursor.close();
}
}
}
+0
它工作完美謝謝分享解決方案 –
+0
@ gaurav4sarma我很高興它幫助你了! –
+0
當然不是問題,同時你也可以請upvote這個問題。謝謝 –
相關問題
- 1. 檢索聯繫人時出現重複聯繫人問題
- 2. Android應用:從聯繫人列表中檢索「我」聯繫人
- 3. 如何使用聯繫人ID檢索聯繫人圖片
- 4. Android設備聯繫人顯示重複的聯繫人條目
- 5. 檢索所有聯繫人時跳過最聯繫的聯繫人
- 6. 如何在插入新聯繫人時檢測到重複的聯繫人?
- 7. 在android 2.2中檢索聯繫人
- 8. 在Android上檢索聯繫人圖像
- 9. 檢索谷歌聯繫人
- 10. 檢索聯繫人指出
- 11. Android聯繫人
- 12. 當聯繫人被人使用時聯繫人的圖標
- 13. 聯繫人寫入聯繫人數據庫 - Android 2.1
- 14. Google聯繫人每個聯繫人的API檢索組名稱
- 15. Google聯繫人API聯繫人的URL列表檢索.net
- 16. 谷歌聯繫人API PHP捲曲檢索聯繫人
- 17. 將數據關聯到android聯繫人
- 18. 使用Zend檢索Google聯繫人
- 19. 使用gdata.contacts.client和oauth2檢索聯繫人
- 20. 從Android Froyo檢索聯繫人2.2
- 21. 檢索聯繫人列表android
- 22. 如何檢索「標準」Android聯繫人
- 23. Android MultiAutoCompleteTextView檢索多個聯繫人
- 24. 部分聯繫人在每次編寫同一聯繫人後重複(Android 2.0+)
- 25. 科爾多瓦聯繫人插件聯繫人數據複製,而不是覆蓋聯繫人數據
- 26. 聯繫人中的SIM卡聯繫人收件人數據.CONTENT_URI
- 27. 使用聯繫人與谷歌聯繫人同步聯繫人javascript api
- 28. 使用聯繫人
- 29. Android的聯繫人
- 30. autocomplete聯繫人android
你想避免重複的電話號碼或重複的聯繫人姓名嗎?一個聯繫人可能有多個電話號碼,因此每個號碼都會列出相同的顯示名稱。 –
我知道這個問題,但問題是它給我重複的數字。 –
好吧,我遇到了同樣的問題!讓我知道我的答案是否有幫助。 –