这是代码片段,用于请求访问设备中精细位置的权限。
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/