如何将 expo-image-picker 与 android 11 范围存储一起使用?
Posted
技术标签:
【中文标题】如何将 expo-image-picker 与 android 11 范围存储一起使用?【英文标题】:how to use expo-image-picker with android 11 scoped storage? 【发布时间】:2021-07-18 06:14:06 【问题描述】:我在我的 expo 管理的 react 本机应用程序中使用了 expo-image-picker。它工作正常。 我只需要使用相机拍摄新照片并为我的应用从图库中挑选照片。 对于这些,我使用了以下 API
ImagePicker.requestMediaLibraryPermissionsAsync()
ImagePicker.requestCameraPermissionsAsync()
ImagePicker.launchImageLibraryAsync()
ImagePicker.launchCameraAsync()
对于 android,我在 app.json 文件中的权限数组如下
"permissions": [
"CAMERA",
"CAMERA_ROLL",
"READ_EXTERNAL_STORAGE",
"WRITE_EXTERNAL_STORAGE",
"LOCATION"
]
现在谷歌给我发了这封电子邮件
我们检测到您的应用包含 requestLegacyExternalStorage 在您的 1 个或多个 app bundle 或 APK 的清单文件中标记。
在运行 Android 11+ 的设备上拥有应用的开发者必须使用 Scoped 存储让用户更好地控制他们的设备存储。 要在 5 月 5 日之后在 Android 11 或更高版本上发布您的应用,您必须 要么:
更新您的应用以使用对隐私更友好的最佳做法,例如 存储访问框架或媒体商店 API 将您的应用更新为 在中声明所有文件访问 (MANAGE_EXTERNAL_STORAGE) 权限 清单文件,并完成所有文件访问权限 从 5 月 5 日起在 Play 管理中心中声明删除所有文件访问权限 完全来自您的应用的许可对于面向 Android 11 的应用, requestLegacyExternalStorage 标志将被忽略。您必须使用 保留广泛访问权限的所有文件访问权限。
请求访问所有文件访问权限的应用程序没有 允许的使用将从 Google Play 中删除,您将无法使用 发布更新。
谁能帮我解决这个问题? 我需要更改我的图像选择器 api 中的任何内容吗?或者我需要从我的权限数组中添加/删除一些东西吗? 请帮助我...请...
【问题讨论】:
你确定这个图像选择器会导致问题吗?然后..如果有 ACTION_GET_CONTENT 或 ACTION_OPEN_DOCUMENT,你为什么要使用这样的图像选择器?We've detected that your app contains the requestLegacyExternalStorage flag in the manifest file
好的。所以这将是一个问题。然后我们读了the requestLegacyExternalStorage flag will be ignored.
好了..那么问题出在哪里?
@blackapps 你能分享任何显示使用 ACTION_GET_CONTENT 和 ACTION_OPEN_DOCUMENT 的工作 sn-p 吗?
你最好自己作为互联网采取行动,而且这个网站充满了使用示例。
哦...太好了..谢谢...你真的帮了很多忙...@blackapps
【参考方案1】:
找到解决方案。 实际上我的代码没有问题。是谷歌让我感到困惑。 这是详细信息https://github.com/expo/expo/issues/12603#issuecomment-827600227
【讨论】:
以上是关于如何将 expo-image-picker 与 android 11 范围存储一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在反应本机博览会应用程序(android)中授予相机权限