【问题标题】:Changing contact image programmatically is working for some devices and not for others以编程方式更改联系人图像适用于某些设备,但不适用于其他设备
【发布时间】:2014-10-28 17:34:42
【问题描述】:

我正在尝试通过联系人 ID 更新我的联系人图像,但是当我在三星 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();
    }
}

【问题讨论】:

  • 检查 s3 设备中的 catch 部分。
  • 我的 s3 的 logcat 中没有错误
  • 如果需要更多信息,请告诉我。我整天都被困在这上面!

标签: java android android-contacts


【解决方案1】:

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

Add photo to a raw contact

将数据行标记为 IS_PRIMARY 和 IS_SUPER_PRIMARY

IS_SUPER_PRIMARY

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

Contacts

【讨论】:

  • 你能告诉我你所说的“检查列下的 PHOTO_ID”的代码 sn-p 吗?
  • 我的意思是让您检查下一个链接并向下滚动到列并检查 PHOTO_ID 的说明。
猜你喜欢
  • 2016-02-06
  • 2016-10-11
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2012-07-28
  • 1970-01-01
相关资源
最近更新 更多