ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS ничего не делает - PullRequest
0 голосов
/ 03 октября 2018

Я не имею в виду, что ничего не происходит.Всплывающее диалоговое окно:

"Разрешить приложению всегда работать в фоновом режиме? Разрешить / Запретить

Но тогда, если я зайду в настройки, Приложение, Оптимизация батареи, мое приложение все равно будет установлено на" Оптимизация батареи "использовать ". Затем я могу вручную переключить его на" Не оптимизировать ", но в соответствии с документами и всеми остальными вопросами здесь, используя намерение ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS и нажав кнопку разрешения, следует изменить этот параметр.

IЯ использую:

Кроме того, это приложение предназначено для исследований и не пойдет в магазин, поэтому я не беспокоюсь о политиках Play Store.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Intent intent = new Intent();
        String packageName = getPackageName();
        PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
        if (!pm.isIgnoringBatteryOptimizations(packageName)) {
            intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            intent.setData(Uri.parse("package:" + packageName));
            startActivity(intent);
        }
    }

Я использую вышеуказанноекод. Он запускается, вызывает диалоговое окно «Разрешить приложению всегда работать в фоновом режиме?» Я нажимаю «Разрешить».

Мой вопрос заключается в том, что на самом деле делает нажатие «Разрешить», потому что если вы затем перейдете в настройки приложения,и посмотрите на Оптимизацию батареи, Настройки говорят, что Приложение все еще "Оптимизация использования батареи".

Таким образом, это выглядело бы как указано выше, и нажатие Allow фактически не делаетчто-нибудь, что когда-либо.

1 Ответ

0 голосов
/ 03 октября 2018

Я поместил ваш код в проект металлолома, добавил в манифест разрешение android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, запустил его на Google Pixel (Android 9.0), и все заработало, как и ожидалось.Перезагрузка не требуется.

Итак, либо:

  • Ваша проблема только на устройствах с Android 8.1 или более ранними версиями и отражает ошибку платформы, которую они исправили в 9.0, или

  • Ваша проблема связана с определенными устройствами определенных производителей

Я предполагаю, что это последнее, но вам нужно будет провести более обширное тестированиечтобы попытаться определить это.

...