首页 > 解决方案 > 如何在 Android 8 上获得广播 ACTION_POWER_CONNECTED

问题描述

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

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

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

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

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

标签: androidbroadcastreceiverandroid-8.0-oreo

解决方案


有些广播不受后台执行限制,并且广播接收器仍然可以在清单中注册。

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

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


推荐阅读