如何在 Android 8 上广播 ACTION_POWER_CONNECTED

How to get broadcast ACTION_POWER_CONNECTED on Android 8

我正在尝试制作一个应用程序,当您在一天中的特定时段将 phone 连接到充电器时会显示一些信息。

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

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

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

当 Android 设备连接到 Android Oreo 中的充电器时,是否有电池友好的方式来触发操作?

broadcasts which are exempted from the background execution limitations 个广播接收器仍然可以在清单中注册。

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

另一种解决方案是使用 JobScheduler 创建一个 requires charging 的作业。那你就不需要前台服务了。