#java #android
#java #Android
Вопрос:
Это фрагмент кода для запроса разрешения на доступ к точному местоположению в устройстве.
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
...
Если бы вместо этого я переключил ContextCompat с ActivityCompat наоборот, будет ли мой код по-прежнему функционировать по желанию? Например,
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, поскольку они оба используют одни и те же методы?
Ответ №1:
На самом деле компромисса нет. Не уверен, почему они так написали — checkSelfPermission() — это метод ContextCompat, а ActivityCompat является подклассом (дочерним) ContextCompat, поэтому вы можете передавать любой из них всякий раз, когда требуется объект класса ContextCompat.