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

相關問題