Warwicky
Warwicky

Reputation: 281

Android Notification Opens On Existing Activity

I am in trouble with notification intents. I have a service(Service checks for messages and creates notification) which creates notifications. And application has an action bar and via slide menu users can navigate between activities.

https://i.sstatic.net/YJXe6.png

When user clicks notification it opens a new activity on the current activity.(Like an independent new instance). I want to open them in the same instance as if user navigating manually(Like clicking A when on B activity ie)

My current activity launchMode is standard(Although I tried singleTop and singleTask and flags)

Current Notification code :

Intent i = null;
i = new Intent(this, MessagesListActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,i, 0);
Builder notificationBuilder  = new NotificationCompat.Builder(this);
notificationBuilder.setContentTitle(title);
notificationBuilder.setContentText(msg);
notificationBuilder.setSmallIcon(R.drawable.speech_bubble_orange);
notificationBuilder.setContentIntent(contentIntent);
notificationBuilder.setAutoCancel(true);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = notificationBuilder.build();
notificationManager.notify(Constants.UNREADMESSAGESNOTIFICATIONID,notification); 

Thanks for your help.

Upvotes: 0

Views: 798

Answers (3)

Warwicky
Warwicky

Reputation: 281

I solved the problem. With this combination new launched activity clears stackback. I also did not change the launchmodes (still standard)

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

Upvotes: 1

Emmanuel
Emmanuel

Reputation: 13233

If I understood correctly, I think what you are looking for is the TaskStackBuilder. It allows you to create a backstack to provide proper navigation to the Activity being launched by the PendingIntent.

See the docs here for more information.

Upvotes: 0

Ringo
Ringo

Reputation: 838

In your manifest, you have to tag your activity as single instance, and keep the singleTask

android:launchMode= "singleTask" | "singleInstance"

in addition, you may have to remove the single top flag from your intent.

Upvotes: 0

Related Questions