You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android targetSdkVersion>25时如何监听电池充电状态变化

监听Android设备充电状态变化的方案

针对targetSdkVersion ≤25的情况

当你的应用targetSdkVersion不超过25时,可以通过隐式Intent的BroadcastReceiver来监听电池充电状态的变化,只需在Manifest里声明对应的接收器即可:

<receiver android:name=".PowerConnectionReceiver">
    <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
    </intent-filter>
</receiver>

这个接收器会在设备连接电源(ACTION_POWER_CONNECTED)和断开电源(ACTION_POWER_DISCONNECTED)时被触发。

针对targetSdkVersion >25的情况

从Android 8.0(API 26)开始,系统禁用了大部分隐式广播Intent(仅有少数显著例外)。如果此时仍使用上述Manifest声明的隐式广播接收器,会看到类似W/BroadcastQueue: Background execution not allowed: receiving Intent的警告,且接收器无法正常工作。

充电连接的监听方案

对于设备进入充电状态的场景,可以使用JobScheduler来调度任务,设置仅当设备处于充电状态时才执行对应的逻辑,这种方式符合系统的后台限制要求。

电源断开的高效监听方案

目前比较可行的方案是使用AlarmManager定期轮询电池的充电状态:

  • 设置一个合适间隔的重复闹钟,每次触发时通过BatteryManager的相关API获取当前电池的充电状态
  • 对比上次记录的状态,判断是否发生了电源断开的变化,再执行对应的业务逻辑

内容的提问来源于stack exchange,提问作者rundavidrun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:10:14