假设我们有活动,该活动显示有趣的图片并将其命名为FunnyActivity。单击按钮后,可以从MainActivity启动该活动,MainActivity是out应用程序中的基本Activity。我们还希望有时推送一些通知,并且当用户单击通知时,应该启动此FunnyActivity。因此,我们添加了这部分代码:
Intent notificationIntent = new Intent(this, FunnyActivity.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent intent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), notificationIntent, 0);
并且此PendingIntent在通知生成器中使用
setContentIntent(intent)
当然,FunnyActivity可以很好地启动,但是我们想在用户单击FunnyActivity上的后退按钮时打开MainActivity。
我们如何实现这一目标?请记住,当用户返回MainActivity时,他可以从按钮再次打开FunnyActivity。
最佳答案
尝试这个:
// Intent for the activity to open when user selects the notification
Intent detailsIntent = new Intent(this, DetailsActivity.class);
// Use TaskStackBuilder to build the back stack and get the PendingIntent
PendingIntent pendingIntent =
TaskStackBuilder.create(this)
// add all of DetailsActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(upIntent)
.addNextIntent(detailsIntent);
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(pendingIntent);
资料来源:Create back stack when starting the activity