2012-01-17 68 views
0

有沒有辦法讓聯繫人ID,拳頭/姓氏和聯繫人圖片獲得所有設備聯繫人(聚合,而不是原始)?Android聯繫人:如何獲取名字,姓氏和圖片的聯繫人列表

目前我使用下面的代碼,但它不返回結構化的名字:

private static final String CONTACTS_SORT_ORDER = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

// all contacts 
public final String[] columns = { 
         ContactsContract.Contacts._ID, 
         ContactsContract.Contacts.DISPLAY_NAME,         
         ContactsContract.Contacts.PHOTO_THUMBNAIL_URI}; 

c = contentResolver.query(Contacts.CONTENT_URI, null, null, null, CONTACTS_SORT_ORDER); 

感謝

回答

3

這是不可能使用一個查詢獲取所需的數據。對於每個聯繫人ID,你必須查詢其數據目錄:

Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId); 
Uri dataUri = Uri.withAppendedPath(contactUri, Contacts.Data.CONTENT_DIRECTORY); 

那麼你應該運行查詢在此URI,通過StructuredName.CONTENT_ITEM_TYPE過濾MIMETYPE獲得StructuredName對於給定的ID。

Uri dataUri = Uri.withAppendedPath(contactUri, Contacts.Data.CONTENT_DIRECTORY); 
Cursor nameCursor = getActivity().getContentResolver().query(
     dataUri, 
     null, 
     Data.MIMETYPE+"=?", 
     new String[]{ StructuredName.CONTENT_ITEM_TYPE }, 
     null); 
相關問題