Android联系人:如何获取包含名字,姓氏和图片的联系人列表

时间:2012-01-17 13:36:40

标签: android contacts android-contacts

有没有办法让所有设备联系人(聚合,而不是原始)与联系人ID,拳头/姓氏和联系人图片?

目前我使用的是以下代码,但它不会返回结构化名称:

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

由于

1 个答案:

答案 0 :(得分:3)

无法通过一个查询获取所需数据。对于每个联系人ID,您必须查询其数据目录:

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

然后,您应针对此URI运行查询,按MIMETYPE过滤StructuredName.CONTENT_ITEM_TYPE以获取给定ID的StructuredName

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