El estado de la batería no se está cargando

@Override public void onReceive(Context context, Intent intent) { int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); if (status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL) Toast.makeText(context, "Charging!", Toast.LENGTH_SHORT).show(); else Toast.makeText(context, "Not Charging!", Toast.LENGTH_SHORT).show(); } 

Manifiesto:

 <receiver android:name=".receiver.BatteryReceiver"> <intent-filter> <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> <action android:name="android.intent.action.BATTERY_CHANGED" /> </intent-filter> </receiver> 

En este código, el Toast siempre muestra "Not Charging!". He probado esto en un dispositivo real, y cuando lo conecto en corriente alterna o USB, todavía muestra el mensaje "Not Charging!" Tostada.

2 Solutions collect form web for “El estado de la batería no se está cargando”

No puede registrarse para ACTION_BATTERY_CHANGED través del manifiesto, por lo que no está recibiendo esas transmisiones. Está intentando obtener extras de BatteryManager de Intents que no tienen esos extras (por ejemplo, ACTION_POWER_CONNECTED ). Como resultado, obtiene el valor predeterminado de BATTERY_STATUS_UNKNOWN .

Pruebe lo siguiente:

 IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter); int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 

'Status' ahora será un valor entre 1 y 5:

 1 = Unknown 2 = Charging 3 = Discharging 4 = Not Charging 5 = Full 

Tu codigo:

 if (status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL) ... 

Puede escribirse:

 if (status == 2 || status == 5) ... 

Ambos son idénticos porque BatteryManager.BATTERY_STATUS_CHARGING es una constante que siempre equivale a 2, y BatteryManager.BATTERY_STATUS_FULL es una constante que siempre equivale a 5.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.