2017-04-06 1 views
-1

그래서 저는 Android에서 BroadcastReceiver에 대해 배웠습니다. BroadcastReceivers는 관찰자 디자인 패턴을 기반으로하므로 (매우 흥미 롭습니다)
그래서 내가 달성하려고하는 것은 내 메시지를 브로드 캐스트하고 동일한 활동 내에서 메시지를 받고 싶습니다 (테스트 용). 40 : 52.446 20149-20149/com.example.illuminati.broadcastreceiver D/ABC : 전송 여기 는동등한 활동으로 방송을 수신 할 수 없습니다.

04-06 20 디버그 출력 코드 여기

Log.d("ABC", "sending"); 
    Intent intent = new Intent("com.yourcompany.testIntent"); 
    intent.putExtra("value", "test"); 
    sendBroadcast(intent); 



    Log.d("ABC", "sent"); 

    IntentFilter filter = new IntentFilter("com.yourcompany.testIntent"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d("ABC","INSIDE "); 
      String value = intent.getExtras().getString("value"); 
     } 
    }; 

    Log.d("ABC", "receiving"); 
    registerReceiver(receiver, filter); 
    Log.d("ABC", "received"); 

이다 04-06 20 : 40 : 52.447 20149-20149/com.example.illuminati.broadcastreceiver D/ABC : 보낸 04-06 20 : 40 : 52.448 20149-20149/com.example.illuminati.broadcastreceiver D/ABC : 수신 04-06 20 : 40 : 52.453 20149-20149/com.example.illuminati.broadcast 수신기 D/ABC는 : 왜 onReceive 내부 못하고있다() 메소드
내가 여기
어떤 도움 무엇을 놓치고

을받은?

답변

3

브로드 캐스트 수신기를 등록하기 전에 브로드 캐스트 메시지를 보내고 있습니다. 다음과 같은 방법으로 일을 시도하고 작동합니다 : 앱 내부에 메시지를 방송 할 경우

IntentFilter filter = new IntentFilter("com.yourcompany.testIntent"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d("ABC", "INSIDE "); 
      String value = intent.getExtras().getString("value"); 
     } 
    }; 
    registerReceiver(receiver, filter); 
    Intent intent = new Intent("com.yourcompany.testIntent"); 
    intent.putExtra("value", "test"); 
    sendBroadcast(intent); 
+0

그런 어리석은 실수. 나는 너에게 충분히 감사 할 수 없다. 고마워요 :) –

+0

당신은 환영합니다, 계속 배우세요! – AlexTa

관련 문제