这是代码片段,用于请求访问设备中精细位置的权限。

if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);

    }

...


相反,如果我改用ActivityCompat切换了ContextCompat,反之亦然,我的代码是否仍能按需运行?例如,

if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){

    ContextCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);

}

...


我知道ContextCompat是ActivityCompat的子类,但是什么决定何时使用ContextCompat或ActivityCompat,因为它们都共享相同的方法?

最佳答案

确实没有权衡。不知道为什么要这样写-checkSelfPermission()是ContextCompat的一种方法,而ActivityCompat是ContextCompat的子类(子级),因此无论何时需要ContextCompat类的对象,都可以传递其中一个。

refer

关于java - ActivityCompat和ContextCompat是否可以互换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55628604/

10-08 21:17