栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498193.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号