Как получить трансляцию ACTION_POWER_CONNECTED на Android 8

1

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

До Android Oreo это было легко, просто добавьте приемник Broadcast и добавьте android.intent.action.ACTION_POWER_CONNECTED в фильтр намерений в манифесте.

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

Регистрация приемника вещания из моего приложения также не работала, когда приложение закрыто, вещание больше не принимается.

Существует ли удобный для аккумулятора способ инициировать действие, когда устройство Android подключено к зарядному устройству в Android Oreo?

Теги:
broadcastreceiver
android-8.0-oreo

1 ответ

2
Лучший ответ

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

Вы можете использовать трансляцию ACTION_BOOT_COMPLETED, чтобы запустить службу, которая регистрирует получателя для вашей трансляции ACTION_POWER_CONNECTED во время выполнения. (Служба должна быть службой переднего плана. В противном случае она может быть уничтожена.)

Другое решение было бы использовать JobScheduler для создания работы, которая требует оплаты. Тогда вам не нужно обслуживание переднего плана.

  • 0
    Я использовал службу переднего плана для всех версий Android, кроме N. Служба регистрирует BroadcastReceiver для ACTION_POWER_CONNECTED. Затем я использовал BOOT_COMPLETE BroadcastReceiver для запуска службы переднего плана. Для более ранних версий Android я использовал стандартный метод использования BroadcastReceiver и добавления ACTION_POWER_CONNECTED в манифест.
  • 0
    @ Matt ke, будет ли второе предлагаемое решение - создавать JobScheduler, работать, даже если мое приложение будет убито? Я имею в виду, будет ли он срабатывать так же, как если бы я использовал приемник в манифесте?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню