如何正确获取联系人照片?

时间:2011-09-08 05:43:55

标签: android photo contact

我有谷歌联系人与Facebook联系人(带照片)和Skype联系人(带照片)。

我选择skype照片进行联系(通过地址簿应用程序)。地址簿显示与所选(Skype)照片的联系。

启动我的应用。通过联系人ID从ContactsContract.Contacts.CONTENT_URI请求照片ID。将照片“加载”到ImageView。一切似乎都很好 - 照片已经加载。完成我的应用程序。

我选择Facebook照片进行联系(通过地址簿应用程序)。地址簿显示与所选(facebook)照片的联系。

启动我的应用。再次按联系人ID请求照片ID。收到的照片ID与之前的ID不同。将照片“加载”到ImageView。照片尚未加载。 LogCat:“relolveUri在坏位图uri上失败了:......”。为什么???

我的代码的某些部分:

Cursor photoCursor = managedQuery(
    ContactsContract.Contacts.CONTENT_URI,
    new String[]{ ContactsContract.Contacts.PHOTO_ID },
    ContactsContract.Contacts._ID + "=?",
    new String[]{ contactId },
    null);

String photoId = photoCursor.getString(photoCursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
Uri photoUri = Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, photoIdByContatId);

ImageView imageView = (ImageView)findViewById(R.id.photo);
imageView.setImageURI(photoUri);

1 个答案:

答案 0 :(得分:0)

试试这个,

 Cursor photoCursor = managedQuery(

                new String[]{ContactsContract.Contacts._ID + "=?", 
                String.valueOf(ContactsContract.Contacts.Photo.MIMETYPE+ "=?")},
               new String[]{contactId, 
String.valueOf(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) }
null);