2016-07-14 9 views
0

バッテリーブロードキャストイベントを待ち受けようとしています。プラグを差し込んだ/取り外した。バッテリーブロードキャストがステータスコードを送信しない

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(); 
     } 
    } 
} 

私はマニフェストアクション追加しました:あなたはそれが唯一のアンプラグド/プラグインされたときに追跡したい場合は

<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> 

答えて

0

を、私はあなたが受け取った意思を確認することができると思います。

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

しかし、あなたが本当にバッテリ充電されるかどうかを確認したい場合、あなたはあなたのコードを変更する必要があります。その後

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 } 

、私は内検索:

まず、私はあなたが登録したときに、あなたのBroadcastReceiverAndroidManifest.xmlを経由して、(ログにあなたが意図を印刷するとき、それはhasExtrasを思わ余分を持っていない受信意思ことに気付きますStackOverflowの私は、これはANSWER(、詳細についてはそれをチェックしてください)が見つかりました:

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

最初のものは私のために働いてくれてありがとう、歓声!しかし、2番目のものは常に-1を返します。 –

+0

@GurleenSethi私は答えを..更新しました。現在は動作しています – W0rmH0le

+0

@GurleenSethi更新された回答をテストしましたか?可能であれば、結果を教えてください!おかげで – W0rmH0le

関連する問題