2011-06-15 4 views
9

Android 연락처의 즐겨 찾기 목록에서 모든 연락처를 가져 오려고합니다. 현재 즐겨 찾는 그룹 ID를 포함한 모든 그룹 ID를 얻을 수 있습니다. 그러나 즐겨 찾기 그룹 ID로 그룹 ID가있는 대화 상대가없는 것으로 보입니다.Android에서 즐겨 찾기 가져 오기

모든 그룹 ID와 각 그룹의 연락처를 가져 오려고합니다. 이 목록을 인쇄 한 후, 내가 좋아하는 그룹 ID가 연락처 목록

ArrayList<String> favGroupId=new ArrayList<String>(); 
     final String[] GROUP_PROJECTION = new String[] { 
       ContactsContract.Groups._ID, ContactsContract.Groups.TITLE }; 
     Cursor cursor = getContentResolver().query(
     ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, null, 
       null, ContactsContract.Groups.TITLE); 

     while (cursor.moveToNext()) { 
      String id = cursor.getString(cursor 
        .getColumnIndex(ContactsContract.Groups._ID)); 
      Log.v("Test",id); 

      String gTitle = (cursor.getString(cursor 
        .getColumnIndex(ContactsContract.Groups.TITLE))); 

      Log.v("Test",gTitle); 
      if (gTitle.contains("Favorite_")) { 
       gTitle = "Favorites"; 
       favGroupId.add(id); 
      } 
     } 
     cursor.close(); 

답변

22

당신은 ContactsContract.Contact 클래스의 STARRED 필드를 사용하지 않을 것을 발견했다. 당신이 당신의 쿼리를 변경하는 경우 :

Cursor cursor = this.managedQuery(
    ContactsContract.Contacts.CONTENT_URI, projection, "starred=?", 
    new String[] {"1"}, null); 

을이 안드로이드의 기본 연락처 응용 프로그램에서 즐겨 찾기 탭에 나타나는 모든 연락처 목록을 반환해야합니다. 텐트와 연락처를 여는 intentUriString 포함

4

완전한 답변 :

Map getFavoriteContacts(){ 

    Map contactMap = new HashMap(); 

    Uri queryUri = ContactsContract.Contacts.CONTENT_URI; 

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

    String selection =ContactsContract.Contacts.STARRED + "='1'"; 

    Cursor cursor = managedQuery(queryUri, projection, selection, null, null); 

    while (cursor.moveToNext()) { 
     String contactID = cursor.getString(cursor 
       .getColumnIndex(ContactsContract.Contacts._ID)); 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     Uri uri = Uri.withAppendedPath(
      ContactsContract.Contacts.CONTENT_URI, String.valueOf(contactID)); 
     intent.setData(uri); 
     String intentUriString = intent.toUri(0); 

     String title = (cursor.getString(
      cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); 

     contactMap.put(title,intentUriString); 
    } 

    cursor.close(); 
    return contactMap; 
}