我遇到通知意图问题。我有一个服务(服务检查消息和创建通知),它创建通知。应用程序有一个操作栏,通过幻灯片菜单用户可以在活动之间导航。
http://i.stack.imgur.com/YJXe6.png
当用户点击通知时,它会在当前活动上打开一个新活动。(就像一个独立的新实例)。我想在同一个实例中打开它们,就像用户手动导航一样(比如在B活动时点击A即可)
我当前的活动launchMode是标准的(虽然我尝试过singleTop和singleTask以及标志)
当前通知代码:
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);
感谢您的帮助。
答案 0 :(得分:1)
我解决了这个问题。通过这种组合,新启动的活动可以清除堆栈。我也没有改变启动模式(仍然标准)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
答案 1 :(得分:0)
在清单中,您必须将活动标记为单个实例,并保留singleTask
android:launchMode= "singleTask" | "singleInstance"
此外,您可能必须从意图中删除单个顶部标记。
答案 2 :(得分:0)
如果我理解正确,我认为你要找的是TaskStackBuilder
。它允许您创建一个backstack,以便为Activity
正在启动的PendingIntent
提供正确的导航。
有关详细信息,请参阅文档here。