私のアプリケーションでは、電話機がソケットまたはUSBによって充電されているかどうかを確認したいと思います。ACTION_POWER_CONNECTEDがインテントで送信しない
マニフェスト:このために、私は次のコードで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
を返すことこれは私が設定したデフォルト値です。私の電話を抜き差すと、BroadcastReceiverが正しく呼び出されます。そのため、私は、意図した内容にはExtra
が含まれていません。私はhereのコードを持っているので、うまくいくはずです。
私はまたthis答えを見つけましたが、私はUSB充電とソケット充電を区別する必要があるため、私には役立ちません。私が間違って行ったことは何ですか?私はAndroid Nougatでコードをテストしました。
これはうまく動作します!私はそれが最良の解決策ではないと思います。なぜなら、私は 'Broadcast'に' Broadcast'に反応しますが、私はこのIntentをマニフェストで登録することができないので、これまでの唯一の解決策です。これを美化するアイデア?それとも私はちょっと些細なことですか? – Cilenco
私はあなたの放送受信機でこれを行うことは、電源接続の状態が変わった場合にバッテリー状態情報を受信したいので、良い解決策になると思います – IIIIIIIIIIIIIIIIIIIIII