title: How to use registerReceiver method?
body: <p>I want to use dynamically registered <code>BroadcastReceiver</code> that has a reference to an <code>Activity</code> so it can modify its UI. I am using <code>Context.registerReceiver()</code> method but receiver's <code>onReceive()</code> method is never called.</p>
  
  <p>Here is the sample code showing the problem:</p>
  
  <pre><code>package com.example;
  
  import android.app.Activity;
  import android.app.IntentService;
  import android.content.BroadcastReceiver;
  import android.content.Context;
  import android.content.Intent;
  import android.content.IntentFilter;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.KeyEvent;
  
  public class RegisterBroadcastReceiver extends Activity {
  
      public static class MyIntentService extends IntentService {
  
          public MyIntentService() {
              super(MyIntentService.class.getSimpleName());
          }
  
          @Override
          protected void onHandleIntent(Intent intent) {
              Intent i = new Intent(this, MyBroadcastReceiver.class);
              sendBroadcast(i);
          }
      }
  
      public class MyBroadcastReceiver extends BroadcastReceiver {
  
          @Override
          public void onReceive(Context context, Intent intent) {
              Log.i(MyBroadcastReceiver.class.getSimpleName(),
                    "received broadcast");
          }
  
      }
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
      }
  
      MyBroadcastReceiver mReceiver = new MyBroadcastReceiver();
  
      @Override
      protected void onResume() {
          super.onResume();
  
          IntentFilter intentFilter = new IntentFilter();
          registerReceiver(mReceiver, intentFilter);
      }
  
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_MENU) {
              Intent i = new Intent(this, MyIntentService.class);
              startService(i);
          }
          return super.onKeyDown(keyCode, event);
      }
  
      @Override
      protected void onPause() {
          super.onPause();
          unregisterReceiver(mReceiver);
      }
  
  }
  </code></pre>