2015-01-28 2 views
0

내 프로젝트에서 충전 중 배터리 상태를 듣고/수신하지 않고 각 옵션에서 축배를 던지는 브로드 캐스트 수신기를 사용하려고합니다. 앱에서 충전기 상태가 변경 될 때마다 앱이 다운됩니다. 는 (내가 시작하면 충전기와 응용 프로그램은 나에게 바로 토스트 을 보여이다 연결하지만 난 전화를 응용 프로그램 충돌을 uncharge 경우) 여기에 내가 보내고있어 사전에 감사BroadCast Receiver 배터리 상태 오류

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
Intent batteryStatus = this.registerReceiver(null, ifilter); 
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 

boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
        status == BatteryManager.BATTERY_STATUS_FULL; 

    if(isCharging==true){ 

     Toast.makeText(this, "Charging", Toast.LENGTH_SHORT).show(); 
    } 
    else{ 
     Toast.makeText(this, "Charger not connected", Toast.LENGTH_SHORT).show(); 

UPDATE 코드를입니다 내가하는 일을 이해하기가 힘듭니다. 나는 나와 함께 환자 수 :

여기

내가

public class MainActivity extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      checkBatteryState(null); 


     public void checkBatteryState(View sender) { 
      IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
      Intent batteryStatus = registerReceiver(null, filter); 

      int chargeState = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
      String strState; 

      switch (chargeState) { 
       case BatteryManager.BATTERY_STATUS_CHARGING: 
       case BatteryManager.BATTERY_STATUS_FULL: 
        strState = "charging"; 
        Toast.makeText(this, strState, Toast.LENGTH_LONG).show(); 
        break; 
       default: 
        strState = "not charging"; 
        Toast.makeText(this, strState, Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
+1

앱이 다운된다는 것은 무엇을 의미합니까? 무엇이 기록됩니다. 어떤 예외가 주어집니다. 무슨 일이 일어날 것으로 예상됩니까? 질문을 할 때 더 많은 정보를주세요 please – Kon

+0

로그 고양이에 표시된 내용을 실제 전화에 표시 할 수는 없으므로 확인할 수 없습니다. 나는 에뮬레이터를 사용하지 않고있다. (내 Mac에서는 작동하지 않는다.) 충전기가 연결될 때마다 축배를 받고 싶다. –

+0

컴퓨터가 USB 케이블을 통해 컴퓨터에 연결되어 있고 USB 디버깅이 가능하다면 , 당신은 logcat에 물건을 볼 수 있습니다. – vipluv

답변

0

http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html

이 사용중인 무엇을 만든 코드 그래서 아주 새로운 해요?

아마도 의도가 끈적 끈적하다는 것을 보장하지 않았습니다.

내 조언은 널 인수와 함께 registerreceiver를 사용하지 않는 것입니다.

는 브로드 캐스트 리시버를 만드는이 방법을 시도해보십시오 How to send data to another app which is not started

는 onReceive() 함수에 토스트를 넣어.

0

코드는 실제로 수신자를 등록하는 것이 아니라 끈적 거리는 방송을 수신하는 것입니다. 브로드 캐스트가 한번도 전송되지 않았다면 이것은 Null을 반환 할 것이고 나머지 코드에서 NPE가 발생할 것이다.

관련 문제