【发布时间】:2018-05-19 08:49:19
【问题描述】:
我尝试使用获取联系人 id 和图片 uri 的函数更新 ContactsContract 中的照片,但它似乎不起作用(并且我的函数返回 true)。
我真的不明白,因为代码看起来不错。
当联系人已经有照片时,它似乎正在工作......
这是我的功能:
boolean updatePhoto(String idStr, String uri){
if (uri != null) {
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
File imgFile = new File(uri.replace("file://", ""));
if (imgFile.exists()) {
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.JPEG, 75, stream);
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + " = ?" + " AND " + ContactsContract.Data.MIMETYPE + "=?",
new String[]{idStr, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE})
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, stream.toByteArray())
.build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
}
return true;
}
【问题讨论】:
标签: android uri android-file contactscontract