Как изменить настройки оптимизации батареи вручную ПОСЛЕ запроса на игнорирование оптимизации батареи? - PullRequest
0 голосов
/ 07 января 2019

Я использую следующий код для запроса игнорирования оптимизации батареи для приложения. Я могу успешно запросить разрешение. Я могу определить, находится ли приложение в белом списке системы, с помощью функции isIgnoringBatteryOptimizations ().

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>


Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

if (pm.isIgnoringBatteryOptimizations(packageName))
    intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else
{
    intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setData(Uri.parse("package:" + packageName));
}
context.startActivity(intent);

Я вижу диалоговое окно, вроде «позволить приложению всегда работать в фоновом режиме?», И я нажимаю «да». Я предполагал, что это добавит мое приложение в белый список оптимизации системной батареи.

Вот моя проблема. В документации упоминается, что пользователь может вручную настроить список в Настройки> Батарея> Оптимизация батареи . Поэтому я ожидал, что после того, как я запрошу и предоставлю разрешение, я смогу увидеть его в настройках системы и смогу удалить его вручную. Но я ничего не вижу. Я не вижу связи между запросом и списком в Системных настройках.

У них один и тот же список? они эквивалентны, если они не одинаковы?

1 Ответ

0 голосов
/ 07 января 2019

Итак, я ожидал, что после того, как я запрошу и предоставлю разрешение, я смогу увидеть его в Системных настройках

Это не то, что происходит, на самом деле. Документация (https://developer.android.com/training/monitoring-device-state/doze-standby#support_for_other_use_cases) говорит:

Приложение, обладающее разрешением REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, может вызвать системное диалоговое окно, позволяющее пользователю добавить приложение в белый список напрямую, без перехода в настройки. Приложение запускает ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent для запуска диалога.

Это просто разрешение на запуск диалога. Приложение не заносится в белый список автоматически. Любой способ, которым пользователь должен явно добавить его в список.

У них один и тот же список? они эквивалентны, если они не одинаковы?

Список только один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...