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
Post a Comment