如何在Android 8上广播ACTION_POWER_CONNECTED

时间:2018-11-22 21:05:49

标签: android broadcastreceiver android-8.0-oreo

我正在尝试制作一个在一天的特定时间段内将手机连接至充电器时显示一些信息的应用程序。

在使用Android Oreo之前,这很容易,只需添加一个Broadcast接收器,然后将android.intent.action.ACTION_POWER_CONNECTED添加到清单中的intentfilter。

现在,我正在努力寻找一种可行的解决方案来创建相同的功能。 我曾想过要定期检查设备的充电状态,但这感觉很不好,并且在将设备连接到充电器时不会立即触发。

从我的应用程序注册广播接收器也不起作用,当应用程序关闭时,不再接收广播。

将Android设备连接到Android Oreo中的充电器时,是否存在电池友好的方式来触发动作?

1 个答案:

答案 0 :(得分:2)

有些broadcasts不受background execution limitations的限制,仍然可以在清单中注册广播接收器。

您可以使用ACTION_BOOT_COMPLETED广播来启动一项服务,该服务在运行时为ACTION_POWER_CONNECTED广播注册一个接收器。 (该服务必须是foreground service。否则,它可能会被破坏。)

另一种解决方案是使用JobScheduler创建requires charging的作业。然后,您不需要前台服务。