2017-10-11 79 views
2

我已将联系人添加到我的地址簿中,该地址簿具有如下的多个号码。 得到与一个联系人相关的所有手机号码android

我想使用ContactsContract内容uri获取所有3个“用户”号码。 通过使用下面的代码,我只有一个联系人。

Cursor cursorAddressBook = mContentResolver.query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); 

    if (cursorAddressBook != null) { 
     while (cursorAddressBook.moveToNext()) { 

      String dataName = cursorAddressBook.getString(cursorAddressBook.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
      String dataNumber = cursorAddressBook.getString(cursorAddressBook.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      int dataType = cursorAddressBook.getInt(cursorAddressBook.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA2)); 
      String contactId = cursorAddressBook.getString(cursorAddressBook.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID)); 

      Log.e("last updat Name last", dataName); 
      Log.e("last updated No last", dataNumber); 
      Log.e("last updated Type last", dataType); 


     } 
     cursorAddressBook.close(); 
    } 

回答

1

的所有电话号码从这个blogpost如果联系人有多个电话号码,然后可以使用检索所有电话号码和其他细节Android的代码内置的类(光标和ContactsContract)在Android。您需要根据手机类型检索联系电话号码(TYPE_MOBILE,TYPE_HOME等)

{ 
    Cursor cursor = cntx.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    Integer contactsCount = cursor.getCount(); // get how many contacts you have in your contacts list 
    if (contactsCount > 0) 
    { 
     while(cursor.moveToNext()) 
     { 
      String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
      String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
      { 
       //the below cursor will give you details for multiple contacts 
       Cursor pCursor = cntx.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
                   ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                   new String[]{id}, null); 
       // continue till this cursor reaches to all phone numbers which are associated with a contact in the contact list 
       while (pCursor.moveToNext()) 
       { 
         int phoneType   = pCursor.getInt(pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
         //String isStarred  = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.STARRED)); 
         String phoneNo = pCursor.getString(pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         //you will get all phone numbers according to it's type as below switch case. 
         //Logs.e will print the phone number along with the name in DDMS. you can use these details where ever you want. 
         switch (phoneType) 
         { 
          case Phone.TYPE_MOBILE: 
           Log.e(contactName + ": TYPE_MOBILE", " " + phoneNo); 
           break; 
          case Phone.TYPE_HOME: 
           Log.e(contactName + ": TYPE_HOME", " " + phoneNo); 
           break; 
          case Phone.TYPE_WORK: 
           Log.e(contactName + ": TYPE_WORK", " " + phoneNo); 
           break; 
          case Phone.TYPE_WORK_MOBILE: 
           Log.e(contactName + ": TYPE_WORK_MOBILE", " " + phoneNo); 
           break;    
          case Phone.TYPE_OTHER: 
           Log.e(contactName + ": TYPE_OTHER", " " + phoneNo); 
           break; 
          default: 
           break; 
         } 
       } 
       pCursor.close(); 
      } 
     } 
     cursor.close(); 
    } 
} 
0

这里是取一个接触

String id, name; 
ContentResolver cr = getContentResolver(); 
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, sortOrder); 

if (cur.getCount() > 0) { 

    while (cur.moveToNext()) { 
     id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
     name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     Log.i(tag, "Id is " + id + "\t Name is" + name); 

     if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 

      Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 

       null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { 
        id 
       }, null); 

      // this second loop will retrieve all the contact numbers for a paricular contact id 
      while (pCur.moveToNext()) { 
       // Do something with phones 

       int phNumber = pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); 

       String phn = pCur.getString(phNumber); 

       Log.i("phn number", phn); 
      } 
      pCur.close(); 

     } 

    } 

} 
相关问题