如何解决通过 Intent 共享照片时删除了 EXIF 位置数据
我最近将我的应用切换到了范围存储。但是,我注意到当我从应用程序内(通过 Intent)共享图像时,GPS 位置数据将从图像的 Exif 元数据中删除。我知道 Scoped Storage 对访问图像的 Exif 位置数据有一些限制,并且我知道 <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
权限,但是在共享图像时添加此权限似乎没有任何影响。知道如何通过 Intent 共享图像,同时在图像的 Exif 数据中保留位置数据吗?
这是我的代码:
val imageUri = mediaList[photo_view_pager.currentItem].uri
val intent = Intent().apply {
val mediaType = MimeTypeMap.getSingleton()
.getMimeTypeFromExtension("jpg")
putExtra(Intent.EXTRA_STREAM,imageUri)
type = mediaType
action = Intent.ACTION_SEND
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
}
startActivity(Intent.createChooser(intent,getString(R.string.share_hint)))
非常感谢您的帮助!
解决方法
我在 Android 11 上的体验。
也必须在运行时请求 ACCESS_MEDIA_LOCATION。
服务应用程序应该具有“所有文件访问权限”,以便接收应用程序从 exif 读取经纬度。
如果服务应用程序具有所有文件访问权限,则不需要 MediaStore.setRequireOriginal 从文件中读取经纬度本身。
(我从未使用过 MediaStore.setRequireOriginal,但现在会调查)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。