2

onReceive 메서드가 호출되지 않는 이유를 알지 못합니다. 나는 모든 예를 온라인으로 따라 왔으며이 사이트에서 비슷한 질문을 많이 쳐다 보았다. 어떤 아이디어? 내가 놓친 게 있니?BroadcastReceiver onReceive()가 작동하지 않음

public class MainActivity extends Activity { 

    public BroadcastReceiver myReceiver = new BroadcastReceiver() { 

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

      Log.d("Receiver", "Receiving message"); 

      String action = intent.getAction(); 
      String message; 

      if (action.equals(BUTTON_ACTION)) { 

       message = intent.getStringExtra("BUTTON"); 
       Log.d("R", message); 

      } 
     } 

    }; 

    String BUTTON_ACTION = "button"; 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, 
       new IntentFilter(BUTTON_ACTION)); 

    } 

    @Override 
    protected void onPause() { 

     super.onPause(); 
     LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver); 

    } 

이 시점에서 버튼을 누르면 로그가 표시됩니다. 하지만 onReceive 메서드는 절대로 수신자에게 전달되지 않습니다.

public void button1(View view) { 

     Log.d("sender", "Broadcasting message"); 

     Intent broadcastIntent = new Intent(); 

     broadcastIntent.setAction(BUTTON_ACTION).addCategory("Button Press") 
       .putExtra("BUTTON", "Button 1 has been pressed.").addFlags(Intent.)); 

     LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent); 

    } 

} 

답변

3

는 범주 세트 방송 의도를 보내는 것 같은데,하지만 BroadcastReceiver는 범주를 처리하도록 설정되어 있지 않습니다. 카테고리를 브로드 캐스트 인 텐트에서 제거하거나 (IntentFilter에 추가하면) 문제가 해결 될 수 있습니다. 워드 프로세서

: 액션과는 달리, 아니 카테고리과로 IntentFilter는 어떤 범주가없는 의도와 일치하는 것으로

참고.

(http://developer.android.com/reference/android/content/IntentFilter.html)

+1

는 너무 브라이언 감사합니다. 그것은 트릭을했다. – user2588287