我希望在我的应用中检查手机是通过插座还是USB充电。为此,我创建了一个以下代码的BroadcastReceiver
:
清单文件:
<receiver
android:name=".ChargingReceiver"
android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
ChargingReceiver
public void onReceive(Context context, Intent intent) {
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean acCharge = (chargePlug == BatteryManager.BATTERY_PLUGGED_AC);
boolean usbCharge = (chargePlug == BatteryManager.BATTERY_PLUGGED_USB);
//...
}
我的问题是,
ChargingReceiver
的第一行总是返回我设定的默认值-1
。当我插入或拔出手机时,广播接收器被正确调用,因此我认为意图不包含我尝试查找的Extra
。我从这里获取了代码,所以应该可以工作。我还发现了这个答案,但它对我没有帮助,因为我必须区分USB充电和插座充电。有什么想法我做错了吗?顺便说一句,我已经在Android Nougat上测试了代码。我想在棒棒糖上它已经起作用了,但我不完全确定...
Broadcast
做出了一个Broadcast
的反应,但由于我无法通过清单文件注册此Intent
,目前这是我唯一可用的解决方案,你有什么想法可以美化它吗?或者我对此太过小气了吗? - Cilenco