Android API 21下获取BATTERY_PROPERTY_CHARGE_COUNTER及返回零问题排查
Android API 21 电池属性相关问题解答
1. 如何在API 21中获取BATTERY_PROPERTY_CHARGE_COUNTER?
在Android API 21中,可通过BatteryManager的getIntProperty()方法直接读取该属性,代码逻辑和你提供的一致:
val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager val chargeCounter = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
注意:
- 需在Manifest中声明
android.permission.BATTERY_STATS权限(API 21中为普通权限,无需动态申请) - 该属性返回值单位为微安时(μAh),代表电池剩余电量,但仅当设备硬件/固件支持该统计时才会返回有效数值
2. API 21设备调用getIntProperty返回0的原因?
返回0通常由以下几种情况导致:
- 硬件不支持:部分API 21老旧设备的电池管理模块未实现
BATTERY_PROPERTY_CHARGE_COUNTER的统计逻辑,系统返回默认值0 - 权限缺失:若应用未声明
BATTERY_STATS权限,系统会限制读取,返回0 - ROM限制:部分定制ROM对第三方应用读取该属性做了限制,导致返回默认值
- 电池状态异常:当电池处于未识别、过放等异常状态时,系统也可能返回0
如果无法获取有效数值,可通过Intent.ACTION_BATTERY_CHANGED广播获取EXTRA_LEVEL和EXTRA_SCALE,计算剩余电量百分比作为替代,但无法获取具体的电量数值。
内容的提问来源于stack exchange,提问作者Arman
相关产品推荐
相关产品推荐

