i fire notification mainactivity class. when user click notification, i'd return mainactivity class , execute method. i'd know which notification clicked (assuming fire multiple notifications different id). here did , didn't work
inside mainactivity.class:
private void shownotification(string title, string message, int id) { notificationcompat.builder mbuilder = new notificationcompat.builder(this) .setsmallicon(r.drawable.ic_launcher) .setcontenttitle(title) .setcontenttext(message); intent resultintent = new intent(this, mainactivity.class); resultintent.setaction("maction"); pendingintent resultpendingintent = pendingintent.getbroadcast(this, 0, resultintent, pendingintent.flag_update_current); mbuilder.setcontentintent(resultpendingintent); notificationmanager mnotificationmanager = (notificationmanager) getsystemservice(context.notification_service); mnotificationmanager.notify(id, mbuilder.build()); } same inside mainactivity.class create broadcastreceiver class it never got called:
public class mybroadcastreceiver extends broadcastreceiver { @override public void onreceive(context context, intent intent) { string action = intent.getaction(); if(action.equals("maction")) { //execute method here } } } i did add mybroadcastreceiver.class receiver in androidmanifest.xml:
<receiver android:name=".mybroadcastreceiver" > </receiver>
as @varun suggestion, here how solve problem.
in shownotification replace .setaction .putextra , change .getbroadcast .getactivity:
intent resultintent = new intent(this, mainactivity.class); resultintent.putextra("maction", id); // put id here know notification clicked pendingintent resultpendingintent = pendingintent.getactivity(this, 0, resultintent, pendingintent.flag_update_current); // change getbroadcast getactivity no longer need mybroadcastreceiver class instead add lines in oncreate() intent result:
if(getintent().hasextra("maction")){ bundle = getintent().getextras(); int id = extra.getint("maction"); if(id == 1) { //do stuff } }