В моем приложении я хочу проверить, заряжен ли телефон сокет или USB. Для этого я создал BroadcastReceiver
со следующим кодом:ACTION_POWER_CONNECTED не отправлен Intent
манифеста:
<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 и зарядку сокетов. Любые идеи, что я сделал неправильно? BTW Я протестировал код с Android Nougat. Я думаю, что на леденец она работала, но я не совсем уверен, что ...
Ничего себе это работает спасибо за это! Я думаю, что это не лучшее решение, потому что я реагирую с помощью «Broadcast» на «Broadcast», но поскольку я не могу зарегистрировать этот «Intent» через манифест, это единственное решение, которое я могу использовать или у вас есть идеи, чтобы украсить это? Или я немного мелочен с этим? – Cilenco
Я думаю, что делать это в вашем широковещательном приемнике было бы хорошим решением, так как вы хотите получать информацию о статусе батареи в случае изменения состояния подключения к сети – IIIIIIIIIIIIIIIIIIIIII