Я хочу поставить isIgnoringBatteryOptimizations
своему приложению.
И я знаю, как проверить, есть ли у приложения разрешение isIgnoringBatteryOptimizations или нет, и если нет, то как запросить разрешение.
Это ниже кода:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val powerManager = this.getSystemService(Context.POWER_SERVICE) as PowerManager
if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
val intent = Intent().apply {
action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
data = Uri.parse("package:$packageName")
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
this.startActivity(intent)
} else {
}
}
Таким образом, он успешно показывает уведомление, чтобы запросить разрешение на игнорирование оптимизации теста.
И это уведомление имеет две кнопки: «нет авторизации» и «авторизация».
Пользователь нажмет на один из них.
Тогда как получить этот результат?
Я могу найти только код запроса разрешения, но не могу найти результат разрешения.
В документации есть раздел о запросе разрешений во время выполнения — в нем есть полный рабочий процесс для проверки наличия разрешения, настройки запроса, если у вас его нет, и последующей обработки результата этого запроса.
У вас есть два варианта , описанных здесь , либо позволить системе обработать это, либо написать свой собственный код для обработки запроса и его ответа — рекомендуется позволить системе сделать это. По сути, вы просто создаете объект обратного вызова (который проверяет, было ли предоставлено разрешение или нет, и действует соответствующим образом), а затем launch
его с соответствующей константой разрешения.
// set up the callback
val requestPermissionLauncher =
registerForActivityResult(RequestPermission()) { isGranted: Boolean ->
if (isGranted) {
...
} else {
...
}
}
// fire off the request when required
requestPermissionLauncher.launch(Manifest.permission.REQUESTED_PERMISSION)