如何从 Android 11 设备的共享存储中选取图像?

Vis*_*hvi 5 android android-permissions android-update-sdk android-11

我使用了这个库 \xc2\xa0 https://github.com/Dhaval2404/ImagePicker \xc2\xa0 并且我收到了来自 android play 控制台团队的警告我们检测到您的应用程序在清单文件中包含 requestLegacyExternalStorage 标志您的 1 个或多个应用程序包或 APK。在运行 Android 11+ 的设备上运行应用的开发人员必须使用范围存储,以便用户更好地控制其设备存储。要在 5 月 5 日之后在 Android 11 或更高版本上发布您的应用,您必须:\xc2\xa0

\n

Kri*_*ony -1

  • 在Android 10之前,我们有一个共享存储的概念。设备中的每个应用程序在内部存储器中都有一些私有存储,您可以在android/data/your_package_name 目录中找到它。除了这个内部存储之外,其余的存储称为共享存储,即每个具有存储权限的应用程序都可以访问这部分内存。这包括不同应用程序的媒体收藏和其他文件。但问题是,拥有存储权限的应用程序并不需要访问所有这些文件。他们想要的只是对内存的一小部分执行一些小操作,仅此而已。例如,某些应用程序只需要选择用户图像即可将其作为个人资料图片上传,而无需其他任何操作。那么,为什么要向他们提供对共享存储的完全访问权限呢?

  • 另外,第二个问题是,当应用程序在存储上具有如此广泛的写入能力时,应用程序生成的文件会变得分散,并且当用户卸载应用程序时,应用程序生成的文件仅保留在存储中并且被删除。没有删除并且占用大量空间。

  • 因此,我们需要某种机制,借助这种机制,应用程序可以获得它们所需的特定访问权限,而无需获得它们实际上不需要的广泛读写能力。这可以在Scoped Storage的帮助下完成。

注意:-从 Android 11 开始,谷歌强制使用范围存储检查此链接