Контакты Android: как получить список контактов с именем, фамилией и фотографией - PullRequest
0 голосов
/ 17 января 2012

Есть ли способ получить все контакты устройства (агрегированные, а не необработанные) с идентификатором контакта, кулаком / фамилией и изображением контакта?

В настоящее время я использую приведенный ниже код, но он не возвращает структурированныйимя:

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 Ответ

3 голосов
/ 17 января 2012

Невозможно получить необходимые данные одним запросом. Для каждого идентификатора контакта вы должны запросить его каталог данных:

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

Затем следует выполнить запросы к этому URI, отфильтровывая MIMETYPE по StructuredName.CONTENT_ITEM_TYPE, чтобы получить 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...