2013-05-06 248 views
0

我正在開發一個應用程序,其中我正在使用startactivity結果並訪問我的應用程序中的默認android電話簿,之後選擇一個聯繫人,獲取姓名,所選聯繫人的一個電話號碼。我想要檢索多個電話號碼,如果任何聯繫人有它和類型的電話號碼,如工作,移動等請幫助我在這,任何幫助,將不勝感激。從選定的聯繫人獲取多個電話號碼

回答

1

試試這個,因爲這對我的作品:

Intent intent = new Intent(Intent.ACTION_PICK); 
      intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
      startActivityForResult(intent, AppConstants.PICK_CONTACT); 

然後在onActivityResult執行以下操作:

Cursor cursor = null; 
      String phoneNumber = "", primaryMobile = ""; 

      List<String> allNumbers = new ArrayList<String>(); 
      int contactIdColumnId = 0, phoneColumnID = 0, nameColumnID = 0; 
      try { 
       Uri result = data.getData(); 
       Utils.printLog(TAG, result.toString()); 
       String id = result.getLastPathSegment(); 
       cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null); 
       contactIdColumnId = cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID); 
       phoneColumnID = cursor.getColumnIndex(Phone.DATA); 
       nameColumnID = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); 

       if (cursor.moveToFirst()) { 
        while (cursor.isAfterLast() == false) { 
         idContactBook = cursor.getString(contactIdColumnId); 
         displayName = cursor.getString(nameColumnID); 
         phoneNumber = cursor.getString(phoneColumnID); 

         if (phoneNumber.length() == 0) 
          continue; 

         int type = cursor.getInt(cursor.getColumnIndex(Phone.TYPE)); 
         if (type == Phone.TYPE_MOBILE && primaryMobile.equals("")) 
          primaryMobile = phoneNumber; 
         allNumbers.add(phoneNumber); 
         cursor.moveToNext(); 
        } 
       } else { 
        // no results actions 
       } 
      } catch (Exception e) { 
       // error actions 
      } finally { 
       if (cursor != null) { 
        cursor.close(); 
       } 
} 
+0

通過給這個Phone.TYPE_MOBILE我們可以得到只有手機類型的電話號碼有沒有任何方法可以讓我獲得與一個聯繫人相關的所有電話號碼。感謝您的幫助 – Ullas 2013-05-06 12:18:13

+0

爲此,你需要添加一個開關case語句或其他如例如: 開關(類型){ 情況Phone.TYPE_MOBILE: 情況下Phone.TYPE_WORK: 情況下Phone.TYPE_HOME: } – 2013-05-06 12:36:52

+0

你能爲我舉個例子嗎? – Ullas 2013-05-06 12:38:43

0

試試這個

Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, personId); 
Uri phonesUri = Uri.withAppendedPath(personUri, People.Phones.CONTENT_DIRECTORY); 
String[] proj = new String[] {Phones._ID, Phones.TYPE, Phones.NUMBER, Phones.LABEL} 
Cursor cursor = contentResolver.query(phonesUri, proj, null, null, null); 
相關問題