Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android 11设备中从共享存储中挑选图像?_Android_Android Permissions_Android 11_Android Update Sdk - Fatal编程技术网

如何在android 11设备中从共享存储中挑选图像?

如何在android 11设备中从共享存储中挑选图像?,android,android-permissions,android-11,android-update-sdk,Android,Android Permissions,Android 11,Android Update Sdk,我使用了这个库,从android play控制台收到了一个警告,团队我们检测到您的应用程序在1个或多个应用程序包或APK的清单文件中包含requestLegacyExternalStorage标志。在运行Android 11+的设备上运行应用程序的开发人员必须使用作用域存储,以便用户更好地访问其设备存储。要在5月5日之后在Android 11或更高版本上发布应用程序,您必须: 在Android 10之前,我们有一个共享存储的概念。每一个 设备中的应用程序在内存中有一些私有存储,您可以在andro

我使用了这个库,从android play控制台收到了一个警告,团队我们检测到您的应用程序在1个或多个应用程序包或APK的清单文件中包含requestLegacyExternalStorage标志。在运行Android 11+的设备上运行应用程序的开发人员必须使用作用域存储,以便用户更好地访问其设备存储。要在5月5日之后在Android 11或更高版本上发布应用程序,您必须:

  • 在Android 10之前,我们有一个共享存储的概念。每一个 设备中的应用程序在内存中有一些私有存储,您可以在android/data/your_package_name中找到 目录。除了这个内部存储,其余的 存储称为共享存储,即具有 存储权限可以访问这部分内存。这包括 不同应用程序的媒体集合和其他文件。但是 问题是,具有存储权限的应用程序没有 需要访问所有这些文件。他们只想表演 对内存的一小部分进行一些小操作 信息技术例如,某些应用程序只需要选择一个用户图像 将其上传为个人资料图片,而不是其他内容。那么,为什么要提供 他们是否可以完全访问该共享存储

  • 另外,第二个问题是,当应用程序具有 存储器上的广泛写入功能,然后由 当用户卸载应用程序时,应用程序变得分散 然后,应用程序生成的文件将保留在 仅存储,不删除,占用大量空间

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

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

简单

val REQUEST_CODE_PICK_PHOTO = 1

pickPhotoButton.setOnClickListener {
    val intent = Intent(Intent.ACTION_PICK)

    intent.type = "image/*"

    startActivityForResult(intent, REQUEST_CODE_PICK_PHOTO)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == REQUEST_CODE_PICK_PHOTO && resultCode == RESULT_OK) {
        val selectedImageUri = data!!.data!!

        //do something with this image uri      
    }
}

演示:

Hey@blackapps我的问题与android许可有关,在android 11之前,从所有android版本的图库中选择图像,但我不知道如何正确实现或解决我的问题。要从“图库”中选择图像,您不需要任何许可或标志。不适用于任何Android版本。那么你的问题是什么?@blackapps With gallery如果我们当时正在从存储中拾取图像,我们需要权限。我不清楚“从存储中拾取图像”时你在做什么。如果你改变了主题,那么也要调整你的文本,因为画廊还在那里。从写一篇直截了当的文章开始。然后换一个主题,用你的最后一条评论开始你的文章。嘿,奎师那,你在安卓11中使用过读写权限吗?是的,我使用过。你可以检查这一点,这将有帮助嘿,我看到了你的答案,但在2021年5月5日之前,你在代码中添加了管理外部存储权限。我猜该权限将在5月5日之后生效,我们还必须提及你在游戏商店中使用的权限