getActivity / XXPermissions

Android 权限请求框架,已适配 Android 14
Apache License 2.0
5.44k stars 735 forks source link

You must add android.permission.READ_MEDIA_IMAGES or android.permission.READ_MEDIA_VIDEO or android.permission.MANAGE_EXTERNAL_STORAGE rights to apply for android.permission.ACCESS_MEDIA_LOCATION rights[Question]: #284

Closed wutiange closed 4 weeks ago

wutiange commented 4 weeks ago

Question Description [Required]

我的代码为:

      val permissions = mutableListOf(
            Manifest.permission.CAMERA,
            Manifest.permission.READ_CALL_LOG,
            Manifest.permission.READ_CONTACTS,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.READ_PHONE_STATE,
            Manifest.permission.CALL_PHONE,
        )

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            permissions.add(Manifest.permission.READ_MEDIA_IMAGES)
            permissions.add(Manifest.permission.ACCESS_MEDIA_LOCATION)
        } else {
            permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE)
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            permissions.add(Manifest.permission.QUERY_ALL_PACKAGES)
        }

        val deniedPermission = XXPermissions.getDenied(activity, permissions)
        if (deniedPermission.size == 0) {
            activity.runOnUiThread {
                webView.evaluateJavascript("onPermissionResult('[]', true)", {})
            }
            return
        }
        XXPermissions.with(activity).permission(deniedPermission)
            .request(object : OnPermissionCallback {
                override fun onGranted(permissions: MutableList<String>, allGranted: Boolean) {
                    val returnStr = if (allGranted) "[]" else Gson().toJson(permissions)
                    webView.evaluateJavascript("onPermissionResult('${returnStr}', true)", {})
                }

                override fun onDenied(permissions: MutableList<String>, doNotAskAgain: Boolean) {
                    if (doNotAskAgain) {
                        XXPermissions.startPermissionActivity(activity, permissions)
                    } else {
                        webView.evaluateJavascript(
                            "onPermissionResult('${Gson().toJson(permissions)}', false)",
                            {})
                    }
                }
            })

提示中说的那个权限我明明添加了,为啥还是不行,在网上找不到任何有用的信息,只是告诉这是一个动态权限,需要申请,可是我申请又会出现这样的错误

Is the issue mentioned in the framework documentation? [Required]

Not Selected

Did you consult the framework documentation but couldn't find a solution? [Required]

Not Selected

Has a similar issue been reported in the issue list? [Required]

Not Selected

Have you searched the issue list but couldn't find a solution? [Required]

Not Selected

getActivity commented 4 weeks ago

小伙子,该 issue 被打回,打回的原因如下:

请重新提一个 issue 并纠正以上问题