我有谷歌联系人与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);
答案 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);