android - 通过 Intent 共享照片时删除了 EXIF 位置数据

标签 android android-intent geolocation mediastore scoped-storage

我最近将我的应用程序切换到 Scoped Storage。但是,我注意到当我从应用程序内(通过 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 但现在会调查)。

关于android - 通过 Intent 共享照片时删除了 EXIF 位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68442139/

相关文章:

java - Android Mysql数据库php文件位置

Android AudioRecord 禁用增益过滤器

android - 对像素和点感到困惑

geolocation - 具有地理位置的场景

android - 需要帮助设计一个 android 用户界面

android - 在没有自动播放的情况下打开视频库

android - 如何通过 Intent Android 从外部存储分享 gif 图像?

javascript - 如何在我的 node.js 中使用地理定位来获取用户设备的纬度/经度

android - 可 ScrollView 应用程序崩溃的 Titanium Android 问题

java - 从另一个 Android 应用程序将数据插入数据库