title: Android - BroadcastReceiver unregisterReceiver issue (not registered)
body: <p>I'm having some problems unregistering a <code>BroadcastReceiver</code>. I'm first registering it but then when I want to unregister it by using <code>unregisterReceiver();</code> command gives me tons of errors. The error says that I've not registered my <code>BroadcastReceiver</code>.</p>
  
  <p>Code:</p>
  
  <pre><code>public class Receiver extends BroadcastReceiver implements Variables {
  
      CheckConexion cc;
  
      @Override
      public void onReceive(Context contxt, Intent intent) {
  
          // Cuando hay un evento, lo diferenciamos y hacemos una acción.
  
          if (intent.getAction().equals(SMS_RECEIVED)) {
              Sms sms = new Sms(null, contxt);
              sms.uploadNewSms(intent);
          } else if (intent.getAction().equals(Intent.ACTION_BATTERY_LOW)) {
              // st.batterylow(contxt);
          } else if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
              // st.power(1, contxt);
          } else if (intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)) {
              // st.power(0, contxt);
          } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)
                  || intent.getAction().equals(Intent.ACTION_PACKAGE_CHANGED)
                  || intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
              Database db = new Database(contxt);
              if (db.open().Preferences(4)) {
                  Uri data = intent.getData();
                  new ListApps(contxt).import_app(intent, contxt, data,
                          intent.getAction());
              }
              db.close();
          } else if (intent.getAction().equals(
                  ConnectivityManager.CONNECTIVITY_ACTION)) {
              cc = new CheckConexion(contxt);
              if (cc.isOnline()) {
  
                  /*Database db = new Database(contxt);
                  db.open();
                  if (db.move() == 1) {
                      new UploadOffline(contxt);
                  }
                  db.close();*/
  
              }
          }
  
      }
  
      public void register(Context c) {
          Receiver r = new Receiver();
          IntentFilter i = new IntentFilter();
          i.addAction(SMS_RECEIVED);
          i.addAction(Intent.ACTION_BATTERY_LOW);
          i.addAction(Intent.ACTION_POWER_CONNECTED);
          i.addAction(Intent.ACTION_POWER_DISCONNECTED);
          i.addAction(Intent.ACTION_CALL_BUTTON);
          i.addAction(Intent.ACTION_CAMERA_BUTTON);
          i.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
          c.registerReceiver(r, i);
          IntentFilter apps = new IntentFilter();
          apps.addAction(Intent.ACTION_PACKAGE_ADDED);
          apps.addAction(Intent.ACTION_PACKAGE_CHANGED);
          apps.addAction(Intent.ACTION_PACKAGE_REMOVED);
          apps.addDataScheme("package");
          c.registerReceiver(r, apps);
      }
  
      public void unregister(Context c) {
          BroadcastReceiver r = new Receiver();
          if (r != null) {
              c.unregisterReceiver(r);
          }
      }
  }
  </code></pre>