Как получить результат разрешения на оптимизацию батареи после запроса разрешения?

Я хочу поставить 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 {
            
            }
        }

Таким образом, он успешно показывает уведомление, чтобы запросить разрешение на игнорирование оптимизации теста.

И это уведомление имеет две кнопки: «нет авторизации» и «авторизация».

Пользователь нажмет на один из них.

Тогда как получить этот результат?

Я могу найти только код запроса разрешения, но не могу найти результат разрешения.

0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В документации есть раздел о запросе разрешений во время выполнения — в нем есть полный рабочий процесс для проверки наличия разрешения, настройки запроса, если у вас его нет, и последующей обработки результата этого запроса.

У вас есть два варианта , описанных здесь , либо позволить системе обработать это, либо написать свой собственный код для обработки запроса и его ответа — рекомендуется позволить системе сделать это. По сути, вы просто создаете объект обратного вызова (который проверяет, было ли предоставлено разрешение или нет, и действует соответствующим образом), а затем 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)

Другие вопросы по теме