Broadcast Intent and IntentFilter in android -


i'm trying broadcast intent between 2 activities.

the intent sent filteractivity previewactivity shown below

final intent imageintent = new intent(); imageintent.setdata(uri); imageintent.setaction("com.test.filter_rendered"); sendbroadcast(imageintent); 

in previewactivity need register receiver , use intentfiter catch intent , check it.

public class previewactivity extends activity {      receivemessages myreceiver = null;     boolean myreceiverisregistered = false;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          myreceiver = new receivemessages();         if (!myreceiverisregistered) {             // registerreceiver(myreceiver, new intentfilter());             registerreceiver(myreceiver, new intentfilter("com.test.filter_rendered"));              myreceiverisregistered = true;         }      ....      @override     protected void onresume(){         super.onresume();         if (!myreceiverisregistered) {             registerreceiver(myreceiver, new intentfilter("com.test.filter_rendered"));             myreceiverisregistered = true;         }     }      @override     protected void onstop() {         super.onstop();         if (myreceiverisregistered) {             unregisterreceiver(myreceiver);             myreceiverisregistered = false;         }     }       @override     protected void onnewintent(intent intent) {         super.onnewintent(intent);         intent mnewintent = intent;          bundle bundle = null;         string fragment = null;         if (intent != null) {             mimagepreviewuri = mnewintent.getdata();             if(mimagepreviewuri!=null) {                 mcameraactionsview.setenabled(true);                 mimagepreview.setimageuri(mimagepreviewuri);             }         }     }      public class receivemessages extends broadcastreceiver     {         @override         public void onreceive(context context, intent intent)         {             string action = intent.getaction();              if(action.equalsignorecase("com.test.filter_rendered")){                 if (intent != null) {                     mimagepreviewuri = intent.getdata();                     if(mimagepreviewuri!=null) {                         mcameraactionsview.setenabled(true);                         mimagepreview.setimageuri(mimagepreviewuri);                     }                 }             }         }     }  } 

unfortunately, intent never received activity<

any idea why, onreceive not triggered ?

the parameter intentfilter constructor action. should use same string in setaction method of intent.

the best way so, whiout doing mistake (like typo) define constant somewhere (let in constant class) :

public static final string your_action = "whaterver_you_want"; 

then use constant. when build intent :

intent.setaction(constant.your_action); 

and when build filter :

intentfilter intentfilter = new intentfilter(constant.your_action); 

Comments