title: Dynamically register/unregister a broadcast receiver in android
body: <p>I want to dynamically register and unregister my receiver class with the broadcast:
  "android.net.wifi.STATE_CHANGE"
  This works very well if I do this in the manifest. But this makes it static. I want to do it dynamically in the activity class. What is its correspondent command in the activity class?</p>
  
  <p>This is what my code is...
  and I am getting a problem because of registering and unregistering(multiple times) my receiver(which is starting a service).</p>
  
  <pre><code>public class startScreen extends Activity {
      /** Called when the activity is first created. */
  
      private BroadcastReceiver receiver = new BroadcastReceiver() {    
  
          @Override
          public void onReceive(Context context, Intent intent) {
              Intent serviceIntent = new Intent();
              serviceIntent.setAction("com.example.MyService");
              context.startService(serviceIntent);    
          }    
      };
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.initial);
  
          final IntentFilter filter = new IntentFilter();
          filter.addAction("android.net.wifi.STATE_CHANGE");   
  
          Button button = (Button) findViewById(R.id.button1);
          final ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
  
          try {
                  ...some code...
              if (bool == true) {
                  toggleButton.setChecked(true);
                  this.registerReceiver(receiver, filter);
              } else
                  toggleButton.setChecked(false);
          } catch (Exception e) {
              Log.e("Error", "Database", e);
          } finally {
                  ...
          }
  
          toggleButton.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
                  if ((toggleButton.isChecked())) {
                      getBaseContext().registerReceiver(receiver, filter);
  
                  } else {
                      if (receiver != null) {
                          getBaseContext().unregisterReceiver(receiver);
                          receiver = null;
                      }
  
                  }
              }
          });
      }    
  
      @Override
      protected void onResume() {
          super.onResume();
          if (bool == true) {
              if (receiver == null)
                  this.registerReceiver(receiver, filter);
          }
      }
  
      @Override
      protected void onPause() {
          super.onPause();
          if (receiver != null) {
              this.unregisterReceiver(receiver);
              receiver = null;
          }
      }
  }
  </code></pre>