2011-06-13 2 views
9

나와 연락처 이름을 갖고 있고 전화 번호를 원합니다. Android에서 해당 이름의 연락 전화 번호를 얻는 방법은 무엇입니까?android의 연락처 이름에서 연락 전화 번호를 얻는 방법

+0

다음은 유용한 링크입니다. http://stackoverflow.com/questions/2356084/read-all-contacts-phone-numbers-in-android http://stackoverflow.com/questions/866769/how-to-call-android-contacts-list –

답변

1

연락처 이름의 표시 이름과 연락처에 대한 모든 휴대 전화 번호를 로그 캣하기 위해 다음 코드는 로그 아웃됩니다이 코드

 people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, "person_name"+"='"+name+"'", null, null); 
     people.moveToFirst(); 
     { 

      { 

       try{ 
        String contactId = people.getString(people.getColumnIndex(ContactsContract.Contacts._ID)); 
        String hasPhone = people.getString(people.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
        if (hasPhone.equalsIgnoreCase("1")) 
         hasPhone = "true"; 
        else 
         hasPhone = "false" ; 
        if (Boolean.parseBoolean(hasPhone)) 
        { 
         Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 
         while (phones.moveToNext()) 
         { 
          String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
          mConno.add(position,phoneNumber); 

         } 
         phones.close(); 
        } 
        if(hasPhone=="false") 
        { mConname.remove(position); 
        } 
        else 
         position++; 
       }  
       catch(Exception e) 
       { 

       } 
      } 

     } 
+0

추신 또한 연락처를 쿼리 할 수있는 권한이 있어야합니다. – damluar

+0

예. kannappan

+0

안녕하세요, 비슷한 것을 시도했지만 작동하지 않았습니다. 여기에 내 질문이있다, 나는 정말로 당신의 도움에 감사 할 것입니다! :) http://stackoverflow.com/questions/35097844/get-contact-name/35098111#35098111 –

3

을 시도해보십시오

Cursor cursor = null; 
try { 
    cursor = getContentResolver().query(Data.CONTENT_URI, 
      new String [] { Data.RAW_CONTACT_ID }, 
      StructuredName.DISPLAY_NAME + "=? AND " 
       + Data.MIMETYPE + "='" + StructuredName.CONTENT_ITEM_TYPE + "'", 
      new String[] { contactName}, null); 
    if (cursor != null && cursor.moveToFirst()) { 
     do { 
      String rawContactId = cursor.getString(0); 
      Cursor phoneCursor = null; 
      try { 
       phoneCursor = getContentResolver().query(Data.CONTENT_URI, 
         new String[] {Data._ID, Phone.NUMBER}, 
         Data.RAW_CONTACT_ID + "=?" + " AND " 
           + Phone.TYPE + "=" + Phone.TYPE_MOBILE + " AND " 
           + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'", 
           new String[] {rawContactId}, null); 

       if (phoneCursor != null && phoneCursor.moveToFirst()) { 
        String number = phoneCursor.getString(phoneCursor.getColumnIndex(Phone.NUMBER)); 
        Log.d(TAG, "Mobile Number: " + number); 
       } 
      } finally { 
       if (phoneCursor != null) { 
        phoneCursor.close(); 
       } 
      } 
     } while (cursor.moveToNext()); 
    } 
} finally { 
    if (cursor != null) { 
     cursor.close(); 
    } 
} 
+0

안녕하세요, 비슷한 시도했지만 작동하지 않았다. 여기에 내 질문이있다, 나는 정말로 당신의 도움에 감사 할 것입니다! :) http://stackoverflow.com/questions/35097844/get-contact-name/35098111#35098111 –

17

짧은 버전; 해당 권한이 필요합니다 (android.permission.READ_CONTACTS)

public String getPhoneNumber(String name, Context context) { 
String ret = null; 
String selection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" like'%" + name +"%'"; 
String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER}; 
Cursor c = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
     projection, selection, null, null); 
if (c.moveToFirst()) { 
    ret = c.getString(0); 
} 
c.close(); 
if(ret==null) 
    ret = "Unsaved"; 
return ret; 
} 
+0

내 메인 활동에서 이것을 어떻게 호출합니까? – Si8

+0

문자열 번호 = getPhoneNumber (contactName, MainActivity.this); –

관련 문제