2016-11-28 55 views
0

我可以獲取每個聯繫人的聯繫人和電話號碼,但電話號碼是重複的,我認爲有一些選項,以顯示與其他應用程序一樣Viber的鏈接聯繫人等,以便接觸要檢索重複Android的聯繫電話號碼獲取複製

如何我可以避免選擇每個聯繫人的重複號碼嗎?

回答

0

試試這個

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(); 

並告訴我,如果這個解決您的問題。 :)

0

我通過使用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方法是有效的,對我來說效果很好。

+0

我認爲每個聯繫人都與地址簿中的某個帳戶相關聯,我們必須僅選擇默認號碼 –

+0

我沒有讓您感到抱歉。你能否詳細說明你的評論 –

相關問題