#android #permissions
#Android #разрешения
Вопрос:
У меня есть сомнения с новой системой проверки разрешений, потому что я работаю с версиями Android от 5.0.3 до 7.X (API-23 и выше), и я не понимаю, как работает система проверки разрешений. manager.openCamera
для этого нужен метод проверки разрешений, я знаю. Прежде всего, я работаю в классе (не activity), и в «этом» мне нужно получить контекст, в котором я нахожусь, но я не могу использовать get context, потому что это для api 24… Итак, для чего мне нужно заменить это «это», и мне нужно сделать что-то еще тогда? Спасибо вам за все.
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
manager.openCamera(cameraId, mStateCallback, backgroundHandler);
Ответ №1:
Вы можете передать контекст в конструкторе этого класса, сохранить его в переменной-члене, а затем заменить «this» на эту переменную-член (или вы могли бы просто передать его в качестве аргумента методу, в котором вы запускаете код).
Но для запроса разрешений вам понадобятся и activity, поэтому вместо «просто» передачи контекста вы могли бы передать activity, и таким образом вы можете использовать activity для вызова как checkSelfPermission, так и requestPermissions.
Теперь проблема в том, как вы будете обрабатывать ответ пользователя? Вы должны реализовать метод onRequestPermissionsResult внутри этого же действия. Если какое-либо действие должно быть в состоянии справиться с этим, создайте класс BaseActivity (который наследуется от Activity) и переопределите этот метод внутри BaseActivity, все остальные действия должны наследовать от этого BaseActivity.