在android中使用存储访问框架时需要READ_EXTERNAL_STORAGE权限

时间:2018-05-08 18:11:58

标签: android storage-access-framework

我正在使用Storage Access Framework访问图片并在我的应用中使用它们。我在某处读到,当使用SAF时,不需要READ_EXTERNAL_STORAGE权限来读取内部存储空间,SD卡或其他任何内容。 Android系统是访问存储的系统,因此应用程序不需要直接访问,这实际上是SAF的主要卖点之一。 但是在没有请求读取权限的情况下运行我的应用程序会导致应用程序崩溃,并且会出错:

java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media, requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

以下是构建相同意图的代码:

val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
    intent.addCategory(Intent.CATEGORY_OPENABLE)
    intent.type = "image/*"
    startActivityForResult(intent, READ_STORAGE_REQUEST_CODE)

以下是onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)回调中的代码:

if (data != null) {
                    avatarImageUri = data.data
                    image_avatar.setImageURI(avatarImageUri)
                    avatarImage = File(getPath(context!!, avatarImageUri!!))
                    isAvatarChanged = true
                    imageObservable.onNext(isAvatarChanged)
                }

我只是尝试使用从SAF中选择的图像并将其设置为image_avatar视图。

任何人都可以帮我解决这个问题并告诉我SAF是否真的需要明确提供权限?

0 个答案:

没有答案