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