Запрос контактов с именем и картинкой URI - PullRequest
1 голос
/ 10 апреля 2010

Я не смог найти ни одного запроса, который дал бы мне в API 2.0 API контактов URI изображения контакта и отображаемое имя.

На данный момент, насколько я знаю, я могу создать URI, имея _ID контакта, но я не видел ни одного имени строки, которое я мог бы использовать в проекции данных или контакта, чтобы получить все, что мне нужно.

(я имею в виду использование API 2 API контактов на Android SDK V5 и выше)

10x.

1 Ответ

5 голосов
/ 10 апреля 2010

Этот метод возвращает фотографию Uri или null, если не существует для контакта, идентифицированного getId ()

public Uri getPhotoUri() {
        Uri person = ContentUris.withAppendedId(
                ContactsContract.Contacts.CONTENT_URI, Long.parseLong(getId()));
        Uri photo = Uri.withAppendedPath(person,
                ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);

        Cursor cur = this.ctx
                .getContentResolver()
                .query(
                        ContactsContract.Data.CONTENT_URI,
                        null,
                        ContactsContract.Data.CONTACT_ID
                                + "="
                                + this.getId()
                                + " AND "
                                + ContactsContract.Data.MIMETYPE
                                + "='"
                                + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE
                                + "'", null, null);
        if (cur != null) {
            if (!cur.moveToFirst()) {
                return null; // no photo
            }
        } else {
            return null; // error in cursor process
        }
        return photo;
    }

Если вы добавите проекцию в Курсор для возврата ContactsContract.Data.CONTACT_ID и ContactsContract.Data.DISPLAY_NAME, возможно, в итоге у вас будет список контактов с установленной фотографией. (не все контакты). Затем для каждого контакта вы можете вычислить Uri фотографии, как в начале метода.

...