gpt4 book ai didi

java - 空指针警告 - BatteryManager.EXTRA_LEVEL

转载 作者:行者123 更新时间:2023-12-01 22:10:07 25 4
gpt4 key购买 nike

我尝试通过以下方式获取设备当前的电池电量:

    Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
Log.i(LOG_FILTER, "Battery level = " + (level*100)/scale);
// error check values
if (level == -1 || scale == -1) {
return -1;
} else {
return (level * 100) / scale;
}

代码似乎有效并且从未让我失望,但我收到警告:

Method invocation 'batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)' may produce 'java.lang.NullPointerException'

这可能永远不会真正影响我的应用程序,但由于最终产品依赖于它,我想知道,我如何解决这个潜在问题?有没有办法重新组织上述内容以获得相同的结果(获取电池当前的充电状态)?

最佳答案

registerReceiver 的 Javadoc 指出:

 * @return The first sticky intent found that matches <var>filter</var>,
* or null if there are none.

因此,这可能会返回一个空事件。您已经处理了值无效的情况((level == -1 || scale == -1)),所以我建议您只检查 Intent 是否为 null,然后返回早期的值(value):

if (batteryIntent == null) {
return -1;
}

关于java - 空指针警告 - BatteryManager.EXTRA_LEVEL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com