2012-01-17 8 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

1つのクエリで必要なデータを取得することはできません。各コンタクトIDの場合は、あなたがそのデータディレクトリを照会する必要があります:

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

その後、指定されたIDのStructuredNameを得ることがStructuredName.CONTENT_ITEM_TYPEによってMIMETYPEをフィルタリングし、このURIに対してクエリを実行する必要があります。

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