【发布时间】:2016-11-24 07:54:04
【问题描述】:
在我的应用程序中,我想检查手机是通过插座还是 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>
充电接收器
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,这是我设置的默认值。当我插入或拔出手机时,BroadcastReceiver 被正确调用,因此在我看来,意图不包含我尝试查找的 Extra。我有来自here 的代码,所以它应该可以工作。
我也找到了this的答案,但这对我没有帮助,因为我必须区分USB充电和插座充电。任何想法我做错了什么?顺便说一句,我已经用 Android Nougat 测试了代码。我认为它在 Lollipop 上有效,但我不完全确定...
【问题讨论】:
标签: android android-intent broadcastreceiver