【问题标题】:Do I have to call super.onRequestPermissionsResult(requestCode, permissions, grantResults) on RequestPermissionsResult?我必须在 RequestPermissionsResult 上调用 super.onRequestPermissionsResult(requestCode, permissions, grantResults) 吗?
【发布时间】:2021-01-07 09:55:31
【问题描述】:

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

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) 是做什么的?需要吗?

【问题讨论】:

    标签: android kotlin methods permissions


    【解决方案1】:

    目前不需要,因为这个方法是empty。它只由你来处理烫发请求结果

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 2012-04-28
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多