posted by 네코냥이 2013. 8. 2. 09:35


출처:     http://blog.naver.com/websearch/70100892837



일반적인 안드로이드 개발 도서에는 managedQuery( People.CONTENT_URI ... ) 을 사용하라고 기술되어 있는데 People 클래스가 deprecated 되었고 ContactsContract 클래스를 사용하라고 안드로이드 문서에 기술되어 있더군요.

 

안드로이드 2.1 이상에서 주소록을 가져오는 기능에 대한 예제 코드는 다음과 같습니다.

 

 private void ReadFromDB()
 {
  Vector<String> arrPhoneList = new Vector<String>();

  Vector<String> arrNameList = new Vector<String>();
  String [] arrProjection = { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME };
  String [] arrPhoneProjection = { ContactsContract.CommonDataKinds.Phone.NUMBER };
  
  Cursor clsCursor = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, arrProjection, ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1" , null, null );
    
  while( clsCursor.moveToNext() )
  {
   String strContactId = clsCursor.getString( 0 );
   
   Cursor clsPhoneCursor = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, arrPhoneProjection
     , ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + strContactId, null, null );
   while( clsPhoneCursor.moveToNext() )
   {

     // 이름과 전화 번호를 각각의 리스트에 저장한다.
     arrNameList.add( clsCursor.getString( 1 ) );
     arrPhoneList.add( clsPhoneCursor.getString( 0 ) );
   }
   
   clsPhoneCursor.close();   
  }

  clsCursor.close( );

 

  // QQQ: 이름과 전화 번호를 화면에 보여준다. - 이 부분은 원하시는 코드를 추가하시면 됩니다.

}

 

[참고자료] http://stackoverflow.com/questions/1721279/how-to-read-contacts-on-android-2-0