我正在研究一个示例应用程序,只是为了插入,更新和删除本机android联系人。我能够成功插入,更新和删除联系人。但更新联系人照片的问题。下面的图像是观察其中相同的接触有两个不同的问题。
更新联系人后,第一张图像仍显示旧图像。但是当我查看完整细节时,我能够查看新更新的联系人图像,如第二张图片所示。以下是更新联系人图像的代码。
mBitmap =getAllowedPhotoBitmap(photo);
mBitmap = ThumbnailUtils.extractThumbnail(mBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
if(mBitmap!=null){ // If an image is selected successfully
mBitmap.compress(Bitmap.CompressFormat.PNG ,100, stream);
op = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
op.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?", new String[{String.valueOf(native_contactid), ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE});
op.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, stream.toByteArray());
ops.add(op.build());
}
问题是什么,我哪里出错?
答案 0 :(得分:1)
答案 1 :(得分:0)
此文件将帮助您设置与联系人ID
联系的图像void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
// Check for the request code, we might be usign multiple
if (requestCode == PICK_CONTACT_REQUEST) {
Uri contactUri = data.getData();
String[] projection = {Phone.CONTACT_ID,Phone.NUMBER,ContactsContract.Data.RAW_CONTACT_ID,ContactsContract.Data._ID };
Cursor cursor = getContentResolver().query(contactUri, projection, null, null, null);
cursor.moveToFirst();
int columcontactID = cursor.getColumnIndex(Phone.CONTACT_ID);
String contactID = cursor.getString(columcontactID);
Bitmap item = (imgBg.getVisibleRectangleBitmap());
setContactPicture(AtWallpaperDetails.this, contactID, item);
}
}
}