Call an activity method from a BroadcastReceiver class

Create the BroadcastReceiver dynamically:

In your BroadcastReceiver class define class member:

YourMainActivity yourMain = null;  

and method:

setMainActivityHandler(YourMainActivity main){
yourMain = main;
}  

from your MainActivity do:

private YourBroadcastReceiverClassName yourBR = null;
yourBR = new YourBroadcastReceiverClassName();
    yourBR.setMainActivityHandler(this);    
    IntentFilter callInterceptorIntentFilter = new           IntentFilter("android.intent.action.ANY_ACTION");
    registerReceiver(yourBR,  callInterceptorIntentFilter);

finally, when yourBR.onReceive is fired you can call:

yourMain.methodOfMainActivity();

#Make your BroadcastReceiver independent of Activity enter image description here Making a BroadcastReceiver inner class of an Activity so that it can access UI elements from its onReceive() method just does not make sense. If you do so you can not reuse the BroadcastReceiver with any other activity. And you will end up writing almost same code again and again.
A better way of doing this would be, make a Callback for BroadcastReceiver and let Your Activity subscribe this Callback.

How do I do that?

1) Create a CallBack interface

public interface ReceiverCallback{

      public void doSomething(Object object);

}

2) Provide your Callback in the BroadcastReceiver

public class MyBroadcastReceiver extends BroadcastReceiver {

     private ReceiverCallback callback;

     public MyBroadcastReceiver(ReceiverCallback callback){

          this.callback = callback;        //<--Initialize this
     }

     @Override
     public void onReceive(Context context, Intent intent) {
  
           // Your listening logic goes here (New WIFI Scan data available, 
                                              Headphone plugged in etc)              

          // Send any data or No data(null)
          callback.doSomething(null);             //<--Send callback event

     }
}

3) Subscribe Your Activity for CallBack events:

public YourActivity extends AppCompatActivity implements ReceiverCallback{

      // Your Activity code 

      public void updateUI() {     //<-- You want this to get Triggered 
             // Update UI code 
      }

      @Override
      public void doSomething(Object object){     
            updateUI();            //<-- Callback does that
      }

}

##Relevant Link: Read a more detailed discussion HERE