1

我有URI一个像这样返回的android函数: content://com.android.contacts/contacts/@some number@

我知道后如何获取此联系人的照片URI

编辑:
为什么以下代码不起作用:

  Uri test = Uri.parse("content://com.android.contacts/contacts/227");
  row.setImageViewUri(android.R.id.icon, test);
4

1 回答 1

2

你应该使用这个方法:

 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);
}
于 2013-09-09T14:56:46.683 回答