【问题标题】:如何从 android 11 设备的共享存储中选择图像?
【发布时间】:2021-07-17 16:02:55
【问题描述】:

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

【问题讨论】:

  • 嘿@blackapps 我的问题与 android 允许从画廊中为所有 android 版本选择图像直到 android 11 但我不知道实现或解决我的问题的正确方法是什么
  • 要从“图库”中选择图像,您不需要任何许可或标志。不适用于任何安卓版本。那你的问题是什么?
  • @blackapps 没有画廊,如果我们从存储中挑选图像,我们需要权限
  • 在“从存储中挑选图像”时,我不清楚您在做什么。如果您更改主题,那么也可以调整您的文本,因为画廊仍然存在。从写一篇中肯的文章开始。
  • 那么,换一个主题,用你最后的评论开始你的帖子。

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


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

  • 另外,第二个问题是当应用程序有这样的 存储上的广泛写入能力,然后生成的文件 应用程序分散,当用户卸载 应用程序然后由应用程序生成的文件保留在 仅存储,不会被删除,占用大量空间。

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

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

【讨论】:

  • 嘿,Krishna 你在 android 11 中使用过 READ 和 WRITE 权限吗?
  • 是的,我用过。你可以检查一下这将有助于stackoverflow.com/a/66366102/9523118
  • 嘿,我看到了你的回答但是在 2021 年 5 月 5 日之前,你在代码中添加了 MANAGE_EXTERNAL_STORAGE 权限
  • 我猜这个权限会在5月5日之后生效
  • 我们还必须提到您在 Play 商店中使用的权限
【解决方案2】:
<queries>
<intent>
    <action android:name="android.intent.action.PICK" />
</intent>

不要忘记将查询标签放在清单文件中。 在清单文件中使用此代码...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多