2016-07-14 8 views
0

Ich habe versucht, Battery BroadCast-Ereignisse zu hören. Plugged/Unplugged.Battery Broadcast sendet keinen Statuscode

public class BatteryReceiver extends BroadcastReceiver { 
    public BatteryReceiver() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 

     if(status == BatteryManager.BATTERY_STATUS_CHARGING){ 
      Toast.makeText(context, "Charging", Toast.LENGTH_SHORT).show(); 
     } else if(status == BatteryManager.BATTERY_STATUS_DISCHARGING || status == BatteryManager.BATTERY_STATUS_NOT_CHARGING){ 
      Toast.makeText(context, "Not charging", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

Ich habe die manifest Aktionen hinzugefügt:

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

Antwort

0

Wenn Sie verfolgen möchten, wenn es/ausgesteckt ist nur, ich glaube, Sie die Absicht empfangen überprüfen können.

public class BatteryReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     if(intent != null) { 
      String action = intent.getAction(); 
      if(action != null) { 
       if(action.equals("android.intent.action.ACTION_POWER_CONNECTED"){ 
        Toast.makeText(context, "Charging", Toast.LENGTH_SHORT).show(); 
       } else if(action.equals("android.intent.action.ACTION_POWER_DISCONNECTED"){ 
        Toast.makeText(context, "Not charging", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 
    } 
} 

UPDATE

Aber wenn Sie wirklich überprüfen möchten, ob Akku geladen wird, müssen Sie den Code ändern.

Zuerst habe ich bemerkt, dass, wenn Sie sich registrieren Ihre BroadcastReceiver über AndroidManifest.xml erhielt Absicht hat keine extra (in log, würde es hasExtras angezeigt, wenn Sie die Absicht zu drucken:

Intent { act=android.intent.action.ACTION_POWER_DISCONNECTED flg=0x4000010 cmp=com.pivoto.myapplication/.BootCompletedReceiver } 
Intent { act=android.intent.action.ACTION_POWER_CONNECTED flg=0x4000010 cmp=com.pivoto.myapplication/.BootCompletedReceiver } 

Dann suchte ich in Stackoverflow und ich fand diese ANSWER (bitte, überprüfen Sie es für weitere Details):

Also, gibt es eine Möglichkeit, „Anforderung“ der Batteriestatus, wenn Sie wollen:

public class BootCompletedReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent != null) { 
      Intent oneTimeOnlyBatteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
      int status = -1; 
      if(oneTimeOnlyBatteryIntent != null) 
       status = oneTimeOnlyBatteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
      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(); 
      } 
     } 
    } 
} 
+0

Die erste wird für mich arbeiten, danke, Prost! aber die zweite gibt immer zurück -1 –

+0

@GurleenSethi Ich aktualisierte die Antwort .. jetzt, es funktioniert – W0rmH0le

+0

@GurleenSethi Haben Sie die aktualisierte Antwort getestet? Wenn möglich, lass mich die Ergebnisse wissen! Danke – W0rmH0le

Verwandte Themen