java - Activity shown immediatly instead of showing a notification -


i'm trying use alarmmanager send notification user later in day, whether using application or not. pasted saw here : http://developer.android.com/guide/topics/ui/notifiers/notifications.html, went wrong because instead of showing notification, androidlauncher activity shown.

here code :

public void plannotification() {         alarmmanager = (alarmmanager)this.getsystemservice(context.alarm_service);          notificationcompat.builder mbuilder =                 new notificationcompat.builder(this)                 .setsmallicon(r.drawable.icon)                 .setcontenttitle("my notification")                 .setcontenttext("hello world!");          intent resultintent = new intent(this, androidlauncher.class);          taskstackbuilder stackbuilder = taskstackbuilder.create(this);         stackbuilder.addparentstack(androidlauncher.class);         stackbuilder.addnextintent(resultintent);         pendingintent resultpendingintent =                 stackbuilder.getpendingintent(                     0,                     pendingintent.flag_update_current                 );         mbuilder.setcontentintent(resultpendingintent);          int currentapiversion = android.os.build.version.sdk_int;          if (currentapiversion >= 19)             am.setwindow(alarmmanager.rtc_wakeup, system.currenttimemillis() + 5000, 5000, resultpendingintent);         else             am.set(alarmmanager.rtc_wakeup, system.currenttimemillis() + 86400000, resultpendingintent);     } 

i'm still new intents , pendingintents, may dumb mistake.

~~~ ~~~ edit : thank ! understood need broadcastreceiver, can't work. looks onreceive() never called.

here main activity :

@override     public void plannotification() {         alarmmanager = (alarmmanager)this.getsystemservice(context.alarm_service);          intent intent = new intent(this, alarmreceiver.class);         pendingintent alarmintent = pendingintent.getbroadcast(this, 0, intent, pendingintent.flag_update_current);          int currentapiversion = android.os.build.version.sdk_int;          if (currentapiversion >= 19)             am.setwindow(alarmmanager.rtc_wakeup, system.currenttimemillis() + 5000, 5000, alarmintent);         else             am.set(alarmmanager.rtc_wakeup, system.currenttimemillis() + 5000, alarmintent);     } 

and broadcastreceiver :

public class alarmreceiver extends broadcastreceiver {      @override     public void onreceive(context context, intent intent) {         system.out.println("on receive");          notificationcompat.builder mbuilder =             new notificationcompat.builder(context)             .setsmallicon(r.drawable.icon)             .setcontenttitle("my notification")             .setcontenttext("hello world!");          intent resultintent = new intent(context, androidlauncher.class);          taskstackbuilder stackbuilder = taskstackbuilder.create(context);         stackbuilder.addparentstack(androidlauncher.class);         stackbuilder.addnextintent(resultintent);         pendingintent resultpendingintent =             stackbuilder.getpendingintent(                 0,                 pendingintent.flag_update_current             );         mbuilder.setcontentintent(resultpendingintent);         notificationmanager mnotificationmanager =             (notificationmanager) context.getsystemservice(context.notification_service);         mnotificationmanager.notify(androidlauncher.notifid, mbuilder.build());     } } 

the way have it, alarm manager directly using resultintent.

you should move notification creation code broadcastreceiver:

public class alarmreceiver extends broadcastreceiver{     @override     public void onreceive(context context, intent intent) {         notificationcompat.builder mbuilder =             new notificationcompat.builder(this)             .setsmallicon(r.drawable.icon)             .setcontenttitle("my notification")             .setcontenttext("hello world!");          intent resultintent = new intent(this, androidlauncher.class);          taskstackbuilder stackbuilder = taskstackbuilder.create(this);         stackbuilder.addparentstack(androidlauncher.class);         stackbuilder.addnextintent(resultintent);         pendingintent resultpendingintent =             stackbuilder.getpendingintent(                 0,                 pendingintent.flag_update_current             );         mbuilder.setcontentintent(resultpendingintent);         notificationmanager mnotificationmanager =             (notificationmanager) getsystemservice(context.notification_service);         mnotificationmanager.notify(mid, mbuilder.build());     } } 

and use alarmmanager call broadcastreceiver:

intent intent = new intent(this, alarmreceiver.class); pendingintent alarmintent = pendingintent.getbroadcast(this, 0, intent, 0); if (currentapiversion >= 19)     am.setwindow(alarmmanager.rtc_wakeup, system.currenttimemillis() + 5000, 5000, alarmintent); else     am.set(alarmmanager.rtc_wakeup, system.currenttimemillis() + 86400000, alarmintent); 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -