首页 > 解决方案 > 我必须在 RequestPermissionsResult 上调用 super.onRequestPermissionsResult(requestCode, permissions, grantResults) 吗?

问题描述

我有这段代码,我不确定是否应该super.onRequestPermissionsResult(requestCode, permissions, grantResults)在 else 块中实现。我不知道为什么需要它。

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        when (requestCode) {
            READ_EXTERNAL_STORAGE_REQUEST_CODE -> {
                if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    performAction()
                } else {
                    Toast.makeText(this, "You cancelled the permission", Toast.LENGTH_SHORT).show()
                }
            }

            else -> super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        }
    }

我已经看到在 Activity 中有这个方法的实现。做什么super.onRequestPermissionsResult(requestCode, permissions, grantResults)?需要吗?

标签: androidkotlinmethodspermissions

解决方案


目前没有必要,因为这个方法是的。它只由你来处理烫发请求结果

但是您仍然应该保留supercall inelse声明-在这种情况下以及所有其他类似的(覆盖的空方法)。你永远不知道 Android 团队何时在 Android 或 AndroidX lib 的源代码中引入了一些默认行为/回调句柄


推荐阅读