Фоновое выполнение не разрешено для BATTERY_LOW - PullRequest
0 голосов
/ 17 декабря 2018

Приложение

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

Проблема

В последнее время Google заставляет разработчиков оптимизировать для целевого API 26

Но после настройкицелевая версия, приложение никогда не запускается, и я получаю это в журнале:

W / BroadcastQueue (1113): фоновое выполнение не разрешено: получение намерения {act = android.intent.action.BATTERY_LOW flg= 0x4000010 (имеет дополнительные функции)} на com.androidlost / .receivers.BatteryLevelReceiver

Решения

Я прочитал https://commonsware.com/blog/2017/04/11/android-o-implicit-broadcast-ban.html, который рекомендует:

Если вы получаете отправленные системой неявные широковещательные рассылки (например, ACTION_PACKAGE_ADDED), оставьте для targetSdkVersion значение 25 или ниже, пока мы не найдем лучшие обходные пути, которые (будем надеяться) не включают опрос.

Но это больше невозможно, так как Google теперь вынуждает нас установить целевую версию высокой.

Единственная идея, которую я могу придумать, - создать работающий сервис, который делаетдинамически зарегистрированный приемник вещания.Но в этом нет особого смысла иметь работающую службу, чтобы получать ее только с намерением BATTERY_LOW.

Вопрос

Как запустить приложение со статического зарегистрированного вещательного приемника?Любые предложения или подсказки приветствуются - ДОЛЖНО быть возможно получить местоположение телефона, прежде чем у него кончится питание ...

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