Я разрабатываю приложение для Android, я должен разрешить пользователям использовать камеру для сканирования QRCode.Как я могу запросить разрешение во время выполнения на Android?
В каждой версии Android (кроме> 6.0) у меня нет проблем, но в зефире я должен разрешить вручную разрешение «Настройки -> Приложение -> Разрешение» (это странно, потому что я объявил разрешение камеры в манифест).
Я прочитал документацию DEV-андроида сайт, но я не понимаю некоторые вещи:
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
} else {
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}
}
Вторая часть кода:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
Как я могу адаптировать этот код к моей проблеме ?
Что такое "MY_PERMISSIONS_REQUEST_READ_CONTACTS"?
статическая переменная с именем, которое я могу изменить, это не «специальный» вар, верно? –
@Max Я не знаком с «специальным» var. Статическая переменная - это класс, который принадлежит классу, для которого не требуется использовать экземпляр объекта (например, переменную экземпляра). См. Мое редактирование о том, как его использовать. –