如何将 expo-image-picker 与 android 11 范围存储一起使用?

问题描述

我在 expo 托管的 React Native 应用程序中使用了 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 中的任何内容吗?或者我是否需要从我的权限数组中添加/删除某些内容? 请帮帮我...拜托...

解决方法

得到解决方案。 其实我的代码没有问题。是谷歌让我感到困惑。 这是详细信息https://github.com/expo/expo/issues/12603#issuecomment-827600227

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...