在我的應用程序中,我想檢查手機是否由套接字或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