Как изменить настройки оптимизации батареи вручную ПОСЛЕ запроса на игнорирование оптимизации батареи?

Я использую следующий код, чтобы запросить игнорирование оптимизации батареи для приложения. Я могу успешно запросить разрешение. Я могу определить, находится ли приложение в белом списке системы, используя 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);

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

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

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


person Air    schedule 07.01.2019    source источник


Ответы (1)


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

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

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

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

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

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

person nandsito    schedule 07.01.2019
comment
На самом деле я мог видеть диалоговое окно, позволяющее приложению всегда работать в фоновом режиме? , и я нажимаю Да. Я просил и Я ДАВАЛ разрешение. После этого действия я могу проверить, есть ли оно в списке, с помощью isIgnoringBatteryOptimizations(). Я по-прежнему не могу проверить список в меню «Настройки» > «Аккумулятор» > «Оптимизация аккумулятора». - person Air; 08.01.2019