Фон:
Я разрабатываю приложение для Android. Когда приложение запускается, оно проверяет, исключено ли оно из оптимизации батареи, с помощью функции isIgnoringBatteryOptimizations()
. Если эта функция возвращает false, я использую разрешение REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
, чтобы отобразить экран настроек оптимизации батареи, где ожидается, что пользователь добавит приложение в белый список.
Все это отлично работает, когда я запускаю приложение из Android Studio. Проблемы начинаются, когда я загружаю и устанавливаю версии-кандидаты.
Обратите внимание, что проблема, которую я опишу, возникает только на одном из двух моих телефонов. Эта проблема возникает на Sharp 507SH под управлением Android 7.0. Эта проблема не возникает на Sony SOV32, также работающем под управлением Android 7.0.
Проблема:
Когда я загружаю и устанавливаю версии-кандидаты (не используя Android Studio) и запускаю приложение, экран оптимизации батареи отображается как обычно. Однако приложение сразу появляется в белом списке «неоптимизированных». Обычно пользователю приходится вручную выбирать приложение и добавлять его. Но он появляется в списке. Таким образом, пользователь нажимает кнопку «Назад», чтобы вернуться в приложение, и все выглядит нормально. Однако приложения на самом деле нет в белом списке. Это подтверждается тем фактом, что приложение запрашивает пользователя каждый раз при запуске приложения, т. е. isIgnoringBatteryOptimizations()
по-прежнему возвращает false.
Я могу добавить приложение в белый список "по-настоящему", сначала зайдя в настройки батареи и удалив его из белого списка, а затем добавив обратно. Затем подсказки исчезают, как и должны.