对API 22的checkSelfPermission有些疑问


#1

Android API 22 中没找到方法ActivityCompat.checkSelfPermission,但是在真机上为啥运行不报错


#2

代码

private fun initViews() {
    btn_request.setOnClickListener {
        if (ActivityCompat.checkSelfPermission(
                this,
                Manifest.permission.READ_PHONE_STATE
            ) == PackageManager.PERMISSION_GRANTED
        ) {
            showDeviceInfo()
        } else {
            ActivityCompat.requestPermissions(
                this,
                arrayOf(Manifest.permission.READ_PHONE_STATE),
                0
            )
        }
    }
}

运行环境

HUAWEI TAG-AL00 Android 5.1 API 22

ActivityCompat.checkSelfPermission源码


没找到checkSelfPermission这个方法。

疑问

  • API 22 没有这个方法,为啥没有报错,是华为在SDK里做了加上了这个方法吗?还是低版本SDK里对这个方法有特别的映射?
  • 我在这个华为机子上测试,发现ActivityCompat.checkSelfPermission这个方法不仅检查了权限,顺便还请求了一下权限(经过DEBUG并没有走下面的requestPermissions的逻辑)

#3

ActivityCompat 继承自 ContextCompat,checkSelfPermission方法在ContextCompat里面,而ContextCompat的checkSelfPermission又是调用了Context的checkPermission方法。


#4

感谢 我已经知道了,我用的是AndroidX中的包,所以所有API版本都能用,当时看错了 :joy: :joy: :joy:


京ICP备16022265号-2 Kotlin China 2017 - 2018