2014-07-21 2 views
0

Android 프로젝트에서 작업 중이며 android.intent.action.BATTERY_CHANGED에 대한 브로드 캐스트 수신기를 등록하고 있습니다. 나는 배터리가 완전히 충전되었음을 나타 내기 위해 레벨이 100 % 일 때만이 기능을 처리하기를 원합니다.android.intent.action.BATTERY_CHANGED 수신기를 등록 할 때 배터리 수준이 변경되지 않는 경우에만

그러나 방송이 등록 되 자마자 배터리 상태가 변경되었다는 메시지가 나타납니다.

의도가 처음 등록 될 때 브로드 캐스트 수신을 중지 할 수있는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

0

아니요, 실제 손잡이가 없습니다. 등록되었거나 등록되지 않았습니다. 당신이 할 수있는 것은 수신기에 정적 변수를 설정하는 것입니다. 기본값은 false입니다. onReceive에서 변수를 살펴보십시오. false 인 경우 true로 설정하고 반환합니다 (다른 작업은 수행하지 않음). 그것의 사실, 사건을 처리하십시오. 매니 페스트를 통해 시작된 경우 수신자가 호출간에 동일한 객체가 아니어도 registerReceiver를 통해 등록 할 때 검사하지 않았기 때문에 정적이어야합니다.

1

아니요, 등록 된 경우 방송을 수신합니다. 사용해보십시오.

private BroadcastReceiver mBatInfoReceiver = null; 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.activity_main); 
    this.mBatInfoReceiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(final Context ctxt, final Intent intent) { 
      final int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); 
      if (level == 100) { 
       // do something 
      } 

     } 
    }; 

    this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 


} 
관련 문제