以编程方式更改联系人图像适用于某些设备,而不适用于其他设备

时间:2014-10-28 17:34:43

标签: java android android-contacts

我正在尝试通过它的联系人ID更新我的联系人图片,但是当我在Samsung S3上测试代码时,它执行正常但未对设备进行任何更改。在我的Nexus 4上它运行得很好,有人知道发生了什么。这是我的代码:

public void setContactImage(Bitmap img, String contactUriId, String rawID) {
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    try {
        Bitmap bitmap = scaleDownBitmap(img, 500, getApplicationContext());
        ByteArrayOutputStream image = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, image);

        ContentProviderOperation.Builder contentOp = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
        contentOp.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?", new String[]{String.valueOf(contactUriId), ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE});
        contentOp.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, image.toByteArray());
        ops.add(contentOp.build());

    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

凹凸

1 个答案:

答案 0 :(得分:0)

我认为您最好将照片写入原始联系人显示照片并将其标记为主要和超级主要照片。

Add photo to a raw contact

将数据行标记为IS_PRIMARY和IS_SUPER_PRIMARY

IS_SUPER_PRIMARY

检查下的PHOTO_ID,了解如何为联系人选择照片

Contacts