android - 未找到 UID 10208 [安全异常] 的持久权限授予

标签 android android-permissions securityexception storage-access-framework imagepicker

我在我的应用程序中使用图像选择器的存储访问框架。下面是代码

val types = arrayOf("image/png", "image/jpeg", "image/jpg")
val intent = Intents.createDocumentIntent(types, true)
if (canDeviceHandle(intent)) caller.startActivityForResult(intent, OPEN_GALLERY)

这里是创建文档的 Intent

 fun createDocumentIntent(types: Array<String>, allowedMultiple: Boolean): Intent {
        return Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
            addCategory(Intent.CATEGORY_OPENABLE)
            type = if (!types.isNullOrEmpty()) {
                putExtra(Intent.EXTRA_MIME_TYPES, types)
                types[0]
            } else "*/*"
            putExtra(Intent.EXTRA_ALLOW_MULTIPLE, allowedMultiple)
            addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION)
            addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        }
    }

这是在 OnActivityResult 中

    private fun handleGalleryActivityResult(data: Intent?, callbacks: FilePicker.Callbacks) {
        if (data == null) return

        val files = mutableListOf<Uri>()
        when {
            data.clipData != null -> {
                val clipData = data.clipData ?: return
                (0 until clipData.itemCount).forEach { files.add(clipData.getItemAt(it).uri) }
            }
            data.data != null -> {
                files.add(data.data!!)
            }
            else -> return
        }

        files.forEach {
            val flags = data.flags and Intent.FLAG_GRANT_READ_URI_PERMISSION
            activity.contentResolver.takePersistableUriPermission(it, flags)
        }

        callbacks.onFilesPicked(files)
    }

我要排队了

 activity.contentResolver.takePersistableUriPermission(it, flags)

在 onActivityResult 中。

我阅读了许多关于此崩溃的解决方案,例如添加持久性 (FLAG_GRANT_PERSISTABLE_URI_PERMISSION) 标志或添加 takePersistableUriPermission,但我已经有了这个,但我仍然遇到此崩溃。直到现在我找不到任何解决方案,我的应用程序用户也在我的手机上遇到这个问题我无法自己重现。

另外附注:我使用的是目标版本 -> 11

最佳答案

替换:

val flags = data.flags and Intent.FLAG_GRANT_READ_URI_PERMISSION

与:

val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION

您传递给 takePersistableUriPermission() 的唯一值是 FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION,您不知道什么数据。 flags 里面有。

关于android - 未找到 UID 10208 [安全异常] 的持久权限授予,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66858222/

相关文章:

android - ACCESS_COARSE_LOCATION 从 play-services-base lib 合并

android - 多重 APK 签名 - 签名保护级别行为

android-7.0-nougat - 无法在android 7中更改当前密码

silverlight-4.0 - Silverlight 无法与 HTTPS Web 服务对话?

android - 记录iOS/Android应用程序用户测试

java - 使用静态类或抽象类创建对象

android - JNI 函数中的两个整数求和返回错误值

android - 在android中将数据从一个 fragment 传递到另一个 fragment 的最佳方式是什么?

java - 当我第二次运行接受权限请求对话框时,为什么我的应用程序不显示位置按钮?

Android - 无法启用 BroadcastReceiver