如何编辑联系人照片

Posted

技术标签:

【中文标题】如何编辑联系人照片【英文标题】:How to Edit Contact Photo 【发布时间】:2020-09-04 10:55:12 【问题描述】:

我想使用 Kotlin 使用新的位图 bmp 作为个人资料图片来更新联系人。我找到了editing contacts 的文档,但在意图页面上找不到更改照片的字段。我发现的任何堆栈溢出解决方案都涉及更新它的奇怪方式,即使开发人员页面鼓励使用意图。更改联系人照片的最佳方法是什么?

【问题讨论】:

【参考方案1】:

首先,永远不要使用bmp,它是一个巨大的文件,你不想将bmp照片放在任何数据库中。

所以,现在要将图片插入特定的原始联系人,并假设您手头有一些标准图片文件(jpeg/png),您可以这样做:

val rawContactPhotoUri = Uri.withAppendedPath(
    ContentUris.withAppendedId(RawContacts.CONTENT_URI, yourRawContactId), // note that this must be a RAW-contact-id, not a contact-id
    RawContacts.DisplayPhoto.CONTENT_DIRECTORY
) // this is the url the represents a RawContact picture

try 
    val bytes = yourPictureFile.toByteArray() // get a byte array from your pic
    val fd = context.contentResolver.openAssetFileDescriptor(rawContactPhotoUri, "rw")
    val os = fd?.createOutputStream()
    os?.write(bytes)
    os?.close()
    fd?.close()
 catch (e: IOException) 
    // Handle the error

【讨论】:

让我澄清一下:我并不是暗示我要保存整个 bmp,只是该变量被命名为“bmp”。我最近从另一篇帖子中找到了这个解决方案并且能够使用它,所以我会检查这个答案。

以上是关于如何编辑联系人照片的主要内容,如果未能解决你的问题,请参考以下文章

Android 联系人照片:如何从网络上取回 (Google) 联系人图片(因此,“取消”以前的本地图片更改)

如何通过 android 2.3.6 中的联系人提供者获取联系人照片?

如何使用 SwiftUI 在 iOS 上获取和显示联系人照片?

如何使用 Android 将手机联系人照片的总列表上传到服务器?

如何在 ios Swift 的单个警报中访问推送通知、联系人和照片?

将联系人的照片写入vcf文件,android