Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Call an activity method from a BroadcastReceiver class

I know I can do an inner receiver class to call any method from my receiver

But my main activity is too damn big and does a lot of things. So I will need a class that extends broadcast receiver but who isn't an inner class. And can call one method from my main activity. I don't know if it's possible but my activity is a Home activity and a "singleInstance" activity so maybe with this detail someone has a way to access to my activity.

If it's impossible any way to split some java code in multiple files my main have more than 600 lines. (and for information I have already 19 java files for an alpha version of my apps so I have try to split it)

like image 228
Jebik Avatar asked Jun 05 '13 07:06

Jebik


1 Answers

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();
like image 195
blganesh101 Avatar answered Sep 28 '22 20:09

blganesh101