2011-06-15 22 views
9

Tôi đang cố gắng lấy tất cả địa chỉ liên hệ trong danh sách liên hệ yêu thích của các liên hệ Android. Hiện tại, tôi có thể nhận tất cả các id nhóm bao gồm ID nhóm yêu thích. Nhưng có vẻ như không có liên hệ nào có ID nhóm làm ID nhóm yêu thích.Nhận danh sách liên hệ yêu thích trong Android

Tôi đang cố gắng nhận tất cả id nhóm và địa chỉ liên hệ trong mỗi nhóm. Sau khi in hai danh sách, tôi thấy rằng id nhóm yêu thích không có trong danh sách liên lạc

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(); 

Trả lời

22

Bạn có thể sử dụng trường STARRED trong lớp ContactsContract.Contact. Nếu bạn thay đổi truy vấn của mình thành:

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

điều này sẽ trả về danh sách tất cả liên hệ xuất hiện trong tab Liên hệ trong ứng dụng Danh bạ mặc định trên Android.

4

câu trả lời hoàn chỉnh, bao gồm intentUriString cho mở tiếp xúc với Intent:

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; 
}