在我的应用程序中,我想检查手机是否由套接字或USB充电。为此,我创建了一个BroadcastReceiver
用下面的代码:ACTION_POWER_CONNECTED不是由意图发送
清单:
<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
这是我设定的默认值。当我插入或拔出手机时,BroadcastReceiver被正确呼叫,所以它在我看来意图不包含我试图查找的Extra
。我有从here的代码,所以它应该工作。
我也发现this答案,但它并没有帮助我,因为我必须区分USB充电和插座充电。任何想法我做错了什么?顺便说一下,我已经测试了与Android Nougat的代码。我觉得棒棒糖它已经工作,但我不能完全肯定...
哇这个作品谢谢你!我认为这不是最好的解决方案,因为我对'Broadcast'做出了反应,但由于我无法通过清单注册这个'Intent',所以它是目前唯一可以使用的解决方案,或者您是否有任何美化这个想法?或者我有点小瞧这个? – Cilenco
我认为在您的广播接收器中这样做会是一个很好的解决方案,因为您只想在电源连接状态改变的情况下接收电池状态信息 – IIIIIIIIIIIIIIIIIIIIII