【问题标题】:Fetching images from gallery- able to fetch without any permission从图库中获取图像 - 无需任何许可即可获取
【发布时间】:2023-03-05 18:23:01
【问题描述】:

使用以下代码从图库中获取图片

val intent = Intent()
intent.action = Intent.ACTION_PICK
intent.type = "image/*"
if (multiImageAllowed) intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
context.startActivityForResult(intent, PICK_IMAGE_GALLERY)

当我使用这个意图时,它会显示多个应用程序的选择器,我选择其中一个应用程序并获取图像,并将其显示在我的应用程序中,(我在 onActivityResult 中获取图像),这些应用程序有自己的运行时权限检查。 我是否也需要在我的应用中添加画廊权限检查? 如果需要,那么为什么 android 没有阻止我或给出例外。 当他/她有意打开应用程序添加图像时,请求用户许可只是一个好的约定吗?

所以我的问题是,我应该在我的应用程序中添加运行时权限还是不需要它。(因为这些应用程序无论如何都在处理它,而且我无法访问比他/她选择的图像更多的图像)

【问题讨论】:

    标签: android gallery android-permissions android-gallery user-permissions


    【解决方案1】:

    使用以下代码从图库中获取图片

    如果您希望用户根据 MIME 类型选择内容,请使用 ACTION_GET_CONTENTACTION_OPEN_DOCUMENTACTION_PICK 是让用户根据特定集合选择内容,由Intent 中的Uri 标识。这就是为什么the ACTION_PICK documentation 提到输入是Uri 并且没有提及任何关于 MIME 类型的内容。

    我是否也需要在我的应用中添加图库权限检查?

    我猜你指的是READ_EXTERNAL_STORAGE。理论上,ACTION_PICKACTION_GET_CONTENTACTION_OPEN_DOCUMENT 返回的Uri 应该可以在没有额外权限的情况下使用,至少for a short time

    然而,并不是每个人都遵守规则,所以恕我直言,如果你持有 READ_EXTERNAL_STORAGE 是最安全的。如果您担心向您的用户请求该权限,您可以尝试延迟它——尝试使用Uri,如果您获得SecurityException,则请求运行时权限。如果用户授予该权限,则再次尝试使用Uri。就个人而言,我的目标是获得更好的可靠性,并会首先请求READ_EXTERNAL_STORAGE

    【讨论】:

    • 嗯,有趣。
    • 但该请求不是不正确,我要求用户访问他的存储(READ_EXTERNAL_STORAGE),但实际上我什至没有读取他的外部存储,这是另一个可以访问他所有的应用程序数据,我可以访问另一个应用程序返回的唯一一个图像(用户选择)。
    • @Bawa:是的,但其他应用可能要求您的应用持有READ_EXTERNAL_STORAGE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2012-10-20
    • 2023-03-10
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多