Я использую следующий код, чтобы запросить игнорирование оптимизации батареи для приложения. Я могу успешно запросить разрешение. Я могу определить, находится ли приложение в белом списке системы, используя 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);
Я вижу диалоговое окно, что-то вроде «разрешить приложению всегда работать в фоновом режиме?», и я нажимаю «да». Я предположил, что это добавит мое приложение в белый список системной оптимизации батареи.
Вот моя проблема. В документации упоминается, что пользователь может вручную настроить список в разделе Настройки > Аккумулятор > Оптимизация аккумулятора. Поэтому я ожидал, что, как только я запрошу и предоставлю разрешение, я увижу его в настройках системы и смогу удалить его вручную. Но я ничего не вижу. Я не вижу никакой связи между запросом и списком из системных настроек.
У них один и тот же список? эквивалентны ли они, если они не одинаковы?