Contacts API 를 이용하여 연락처 정보 가져오기

 

private void LoadContacts() {

Uri uri = ContactsContract.Contacts.CONTENT_URI;

String[] projection = new String[] {
    ContactsContract.Contacts._ID,
    ContactsContract.Contacts.DISPLAY_NAME,
    ContactsContract.Contacts.HAS_PHONE_NUMBER };
 

Cursor cursor = managedQuery(uri, projection, null, null, null);
ContactItem item = null;

if (cursor.getCount() > 0) {
    while (cursor.moveToNext()) {
        if (cursor.getInt(2) == 1) 
         LoadPhoneNumbers(cursor.getString(0));
    }

}

}

 

ContactsContract.Contacts.CONTENT_URI 를 이용하여 id 와 name 을 가져온다.

HAS_PHONE_NUMBER 의 결과값이 1일 경우 id 를 넘겨서

ContactsContract.CommonDataKinds.Phone.CONTENT_URI 를 이용하여

해당 id의 전화번호를 가져온다.

 

private void LoadPhoneNumbers(String id) {

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

String[] projection = new String[] {

ContactsContract.CommonDataKinds.Phone.TYPE, 

ContactsContract.CommonDataKinds.Phone.NUMBER

};

 

String selection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?";
Cursor cursor = managedQuery(uri, projection, selection, new String[] {id}, null);

while (cursor.moveToNext()) {
   Log.w(TAG, "Number Type ==> " + cursor.getString(0));
   Log.w(TAG, "Number ==> " + cursor.getString(1));

}

}

 

타입별로 전화번호를 가져오는 방법은 대략 다음과 같이 하면 될 것 같다.

 

private String getNumberType(int type) {

String numberType = null;

switch (type) {

case Phone.TYPE_MOBILE:
    numberType = "mobile";
    break;

case Phone.TYPE_HOME:
    numberType = "home";

    break;

......

}

return numberType;

}

 

 

 

Posted by 애이불비
l