假设我们有活动,该活动显示有趣的图片并将其命名为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

09-17 17:55