通过Android中的PHOTO_FILE_ID将联系人的图像更改为大照片

通过Android中的PHOTO_FILE_ID将联系人的图像更改为大照片,第1张

通过Android中的PHOTO_FILE_ID将联系人的图像更改为大照片

您自己的答案会奏效,但效率不高,因为需要将照片编码为SQL查询并通过Android
IPC传输。这也使它受制于Android的IPC大小限制1MB(即,如果您的照片太大,则内容提供商 *** 作将失败)。

设置(创建或覆盖)RawContact的(主)照片的最有效方法是使用

openAssetFileDescriptor
和这样的
ContactsContract.RawContacts.DisplayPhoto
URI(例如,从Android文档复制的示例):

public void writeDisplayPhoto(long rawContactId, byte[] photo) {    Uri rawContactPhotoUri = Uri.withAppendedPath( ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId), RawContacts.DisplayPhoto.CONTENT_DIRECTORY);    try {        AssetFileDescriptor fd = getContentResolver().openAssetFileDescriptor(rawContactPhotoUri, "rw");        OutputStream os = fd.createOutputStream();        os.write(photo);        os.close();        fd.close();    } catch (IOException e) {        // Handle error cases.    }}

这种方法的唯一缺点是,它总是创建/替换的主要照片

RawContact
。如果RawContact还没有照片,它将添加一张。

不幸的是没有办法用

openAssetFileDescriptor
PHOTO_FILE_ID
,所以你不能覆盖使用这种方法的ID标识的特定照片。但是,在现实生活中,大多数联系人最多只能有一张照片,所以这并不是一个真正的限制。

这将自动

Photo.PHOTO
使用大照片的缩略图更新列,并分配一个
PHOTO_FILE_ID



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5490314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存