2017-04-06 18 views
-1

私はアンドロイドでBroadcastReceiverについて学習していました。 BroadcastReceiversは、オブザーバーのデザインパターンに基づいています(非常に興味深い)。
私が達成しようとしているのは、私のメッセージをブロードキャストし、同じ活動の中でメッセージを受け取ることです(テスト目的のためだけです)。ここ は、ここでは、コード・スニペット同じアクティビティでブロードキャストを受信することができません

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.446 20149から20149/com.example.illuminati.broadcastreceiver D/ABC:送信 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

関連する問題