我想检索联系人的联系人照片。我该怎么做?

I want to retrieve the contact photo for my contacts. How do i go about it?

我正在使用下面的代码访问 phone 号码和联系人姓名。我想在此功能中添加一种添加联系人照片的方法。

void loadContacts() {
    ContentResolver contentResolver=getContentResolver();
    Cursor cursor=contentResolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
    if(cursor.getCount() > 0) {
        while (cursor.moveToNext()) {String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
            if (hasPhoneNumber > 0) {
                Cursor cursor2 = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
                while (cursor2.moveToNext()) {
                    String phoneNumber = cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    make_contact(name,phoneNumber);
                }
                cursor2.close();
            }
        }
    }
    cursor.close();
}

试试这个

public Uri getPhotoUri() {
try {
    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
    }
} catch (Exception e) {
    e.printStackTrace();
    return null;
}
Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long
        .parseLong(getId()));
return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);

}

现在设置为图片

Uri u = objItem.getPhotoUri();
if (u != null) {
     mPhotoView.setImageURI(u);
} else {
    mPhotoView.setImageResource(R.drawable.ic_contact_picture_2);
}

对于位图图像,

private Bitmap retrieveContactPhoto(String contactID) {

            Bitmap photo = null;

            try {
                InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(),
                        ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(contactID)));

                if (inputStream != null) {
                    photo = BitmapFactory.decodeStream(inputStream);
                }

                assert inputStream != null;
                inputStream.close();

               return photo ;

            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }

        }  

通过使用联系人 ID,您可以检索位图图像并设置为图像视图。