我可以獲取每個聯繫人的聯繫人和電話號碼,但電話號碼是重複的,我認爲有一些選項,以顯示與其他應用程序一樣Viber的鏈接聯繫人等,以便接觸要檢索重複Android的聯繫電話號碼獲取複製
如何我可以避免選擇每個聯繫人的重複號碼嗎?
我可以獲取每個聯繫人的聯繫人和電話號碼,但電話號碼是重複的,我認爲有一些選項,以顯示與其他應用程序一樣Viber的鏈接聯繫人等,以便接觸要檢索重複Android的聯繫電話號碼獲取複製
如何我可以避免選擇每個聯繫人的重複號碼嗎?
試試這個
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 3);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 3) {
if (resultCode == RESULT_OK) {
Uri contactData = data.getData();
contactNumber = "";
Cursor cursor = getContentResolver().query(contactData, null, null, null, null);
cursor.moveToFirst();
String hasPhone = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER));
String contactId = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
if (hasPhone.equals("1")) {
Cursor phones = getContentResolver().query
(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null, null);
while (phones.moveToNext()) {
contactNumber = phones.getString(phones.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.NUMBER)).replaceAll("[-() ]", "");
contactName=phones.getString(phones.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
}
phones.close();
並告訴我,如果這個解決您的問題。 :)
我通過使用hashmap解決了這個問題。您將設備ID的散列表映射到電話號碼。在檢查hashmap是否不包含該設備ID之前,將每個數字都添加到hashmap中。
通過查詢以下URI來獲取設備ID。
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.PHOTO_URI, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME};
Hashmap<String , Contact > = new Hashmap<String , Contact>();
if (contactHashMap.containsKey(id)) {
// skip that contact.
}
else {
//fill your contact object.
// get device id of contact from mobile
contactHashMap.put(id, contact);
}
這樣你就可以避免重複。還有另外一種方法可以查詢其他表格,該表格可以給設備ID賦予編號但這需要兩個疑問。以上hashmap方法是有效的,對我來說效果很好。
我認爲每個聯繫人都與地址簿中的某個帳戶相關聯,我們必須僅選擇默認號碼 –
我沒有讓您感到抱歉。你能否詳細說明你的評論 –