Icebreaker7

 

Android中拨打电话的权限名

在学习《第一行代码》(第三版)的8.8.2小节中,有一个RuntimePermissionTest项目,这个项目用于学习运行时权限的使用方法,其中书上的部分代码如下:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        makeCall.setOnClickListener {
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE), 1)
            } else {
                call()
            }
        }
    }
    ...
}

但是在实际运行中,发现报如下错误(我这里Android Studio的版本是4.0.1,尚不清楚其他版本是否会出现此问题):

解决方案:

在Manifest前面加上android.,即

if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.CALL_PHONE), 1)
            } else {
                call()
            }

报错消失,编译成功

posted on 2022-11-01 21:56  Icebreaker_7  阅读(114)  评论(0编辑  收藏  举报

导航