android - 如何从 android 11 设备的共享存储中选择图像?

标签 android android-permissions android-11 android-update-sdk

我使用了这个库 | https://github.com/Dhaval2404/ImagePicker我收到了来自 android play 控制台的警告,团队我们检测到您的应用在您的 1 个或多个 app bundle 或 APK 的 list 文件中包含 requestLegacyExternalStorage 标志。在运行 Android 11+ 的设备上拥有应用程序的开发人员必须使用 Scoped Storage 为用户提供对其设备存储的更好访问控制。要在 5 月 5 日之后在 Android 11 或更高版本上发布您的应用,您必须:

最佳答案

  • 之前 安卓 10 ,我们有了共享存储的概念。每一个
    设备中的应用程序在内部存储器中有一些私有(private)存储,您可以在 中找到它。安卓/数据/your_package_name
    目录
    .除了这个内部存储,其余的
    存储称为共享存储,即每个应用程序都有
    storage 权限可以访问这部分内存。这包括
    媒体收藏和不同应用程序的其他文件。但是
    问题是具有存储权限的应用程序没有
    需要访问所有这些文件。他们想要的只是表演
    对内存的一小部分进行一些小操作,那就是
    它。例如,某些应用程序只需要选择一个用户图像
    将其作为个人资料图片上传,仅此而已。那么,为什么要提供
    他们拥有对该共享存储的完全访问权限?
  • 另外,第二个问题是当应用程序有这样的
    存储上的广泛写入能力,然后生成的文件
    应用程序分散,当用户卸载
    应用程序然后由应用程序生成的文件保留在
    仅存储并且不会被删除并且占用大量空间。
  • 因此,我们需要某种机制,应用程序借助该机制
    可以获得他们需要的特定访问权限,而无需获得如此广泛的访问权限
    他们实际上并不需要的阅读和写作能力。这可以是
    的帮助下完成范围存储 .

  • 注意:- 从 Android 11 开始,谷歌强制使用 Scope Storage 检查这个Link

    关于android - 如何从 android 11 设备的共享存储中选择图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67230072/

    相关文章:

    android - 在 android 11 中使用 intent.resolveActivity 时调用此方法时,请考虑在 list 中添加查询声明

    android - 使用一些动画在运行时更改 EditText 的高度和宽度

    android - 基于 API 级别请求权限

    android - android list 中的权限名称是否不区分大小写?

    android - 无法访问 Android 11 上的 obb 目录

    android - Android 11 中的位置更新

    java - Facebook GRAPH API - 登录绕过。代币安全

    android - 使用全屏主题时,React Native 'Modal' 组件未覆盖 Android 上的整个屏幕

    java - 如何使用 Activity 正确应用和自定义全局抽屉导航

    Android 12 蓝牙权限困惑