联系人查询名称和图片URI

cod*_*ber 1 android uri image contacts

我找不到一个单独的查询,它会在联系人API的API 2.0中提供联系人图像的URI和显示名称.

目前据我所知,我可以通过联系人的_ID创建一个URI,但我没有看到任何行名称,我可以在数据或联系人的投影中使用,以获得我所需要的一切.

(我指的是在android SDK V5及更高版本上使用contacts API的API 2)

10X.

Pen*_*m10 5

如果getId()标识的联系人不存在,则此方法返回照片Uri或null

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;
    }
Run Code Online (Sandbox Code Playgroud)

如果向Cursor添加投影以返回ContactsContract.Data.CONTACT_ID和ContactsContract.Data.DISPLAY_NAME,则可能最终会得到一个包含照片集的联系人列表.(不是所有的联系人).然后,对于每个联系人,您可以像在方法的开头一样计算照片的Uri.