【发布时间】:2015-03-03 21:10:17
【问题描述】:
我正在寻找一种使用给定位图图像以编程方式更新联系人照片的方法。我正在执行以下操作,但没有任何反应。既没有设置图片也没有发生错误。
Cursor cursor = provider.query(ContactsContract.RawContacts.CONTENT_URI,
new String[]{ContactsContract.RawContacts.CONTACT_ID, ContactsContract.RawContacts.ACCOUNT_TYPE},
ContactsContract.RawContacts.ACCOUNT_TYPE +"=?",
new String[]{accountType},
null);
// Only one entry
if(cursor.moveToFirst())
{
id = cursor.getString(cursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID));
}
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(CompressFormat.JPEG, 100, stream);
byte[] bytes = stream.toByteArray();
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, Integer.parseInt(id))
.withValue(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE)
.withValue(Photo.PHOTO, bytes)
.build());
}
provider.applyBatch(ops);
图像从 REST api 加载,似乎可以正常工作,因为字节对象实际上是下载图像的大小。
【问题讨论】: