2016-07-14 6 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

첫 번째 작품은 저에게 감사합니다. 하지만 두 번째 사람은 항상 -1을 반환합니다. –

+0

@GurleenSethi 답변을 업데이트했습니다. 지금은 작동 중입니다. – W0rmH0le

+0

@GurleenSethi 업데이트 된 답변을 테스트 했습니까? 가능한 경우 결과를 알려주세요. 감사합니다 – W0rmH0le

관련 문제