Launch application when GCM notification received
Asked Answered
C

2

5

I have GCM notification implementation. I know that the client application receives the notification whether it is in the foreground, background or killed state. What I would like to know is, how can I launch my application on notification received, when the application is in the killed state?

Canny answered 28/11, 2012 at 9:39 Comment(0)
C
5

In the message receiver, I do the following:

final Intent notificationIntent = new Intent(context, YourActivity.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);

Here replace YourActivity.class with the entry activity. This worked for me.

Canny answered 22/1, 2013 at 12:40 Comment(2)
What if app is removed from task list? in that case "message receiver" will not called. It will handle by system and it clicked by "click_action" tag. But my concern is open my target activity after notification arrived.Digitalism
how to get context here in fcm message ??Southsoutheast
P
2

you Can Use NotificationManager to Start your activity.

try to use Below Code Inside your onMessage() method Which is overridden method in Class that extends GCMBaseIntentService class of GCM.

int icon = R.drawable.your_app_icon;
        long when = System.currentTimeMillis();
        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification(icon, message, when);
        String title = context.getString(R.string.app_name);

        Intent notificationIntent = new Intent(context, YOUR_ACTIVITY.class);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        // notificationIntent.putExtra("PostName", vPostText);
        // Log.i(TAG, "Sent Postid " + postid);

        // Util util = (Util) context.getApplicationContext();
        // util.setPostID(postid);
        // util.setNotify(true);
        // util.setUserNAME(vPortCode);
        // util.setPostNAME(vPostText);
        // util.setmEDIA(vMedia);
        // util.setmEDIATHHUMB(vMediaThumb);
        // util.setmEDIATYPE(vMediaType);
        // util.setAirportName(vAirportName);

        notificationIntent.putExtra("Set_image", true);
        notificationIntent.putExtra("Notify", true);

        // set intent so it does not start a new activity
        // notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        // notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        // notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        // | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent intent = PendingIntent.getActivity(context,
                (int) System.nanoTime(), notificationIntent, 0);

        notification.setLatestEventInfo(context, title, message, intent);
        notification.defaults |= Notification.DEFAULT_SOUND;
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify((int) System.nanoTime(), notification);
Pomposity answered 28/11, 2012 at 9:46 Comment(3)
Thank you.I know how to start an activity from the application. But, What I would like to do is,on notification received,if my application is in the background,i would bring it to the fore ground, if it is in the foreground then i would continue processing, and if my application is in the stop/killed state then i want to "relaunch the application" not activity. So can you tell me if there is any way to launch the application when the application is in the stop/killed state on notification received?Canny
@jasdmystery: did you find away out? i'm facing same issue.Raybin
Refer to the answer above.Canny

© 2022 - 2024 — McMap. All rights reserved.