【问题标题】:Return to previous app instead of home screen from Notification从通知返回上一个应用程序而不是主屏幕
【发布时间】:2014-09-08 04:53:36
【问题描述】:

我有一个应用程序有一个活动,比如说 A。我在启动 A 的通知栏上放了一个通知。也就是说,当用户选择通知时,将启动一个活动。但是当用户按下后退按钮时,系统将转到主屏幕,而不是上一个活动(可能是另一个应用程序)。如何让系统完成 A 活动并返回上一个活动而不是主屏幕?

我创建通知的代码:

    Notification.Builder mBuilder = new Notification.Builder(this).setSmallIcon(R.drawable.icon).setContentText("title");
    Intent resultIntent = new Intent(this, ResultActivity.class);
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pi = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(pi);
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(0, mBuilder.build());

【问题讨论】:

    标签: android android-intent android-notifications android-pendingintent android-notification-bar


    【解决方案1】:

    我好像找到了答案,添加以下两行:

    resultIntent.setAction(Intent.ACTION_MAIN);
    resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    

    并删除这一行:

    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    

    但实际上我不明白为什么。 有人能解释一下或给出更好的答案吗?

    【讨论】:

    • FLAG_ACTIVITY_NEW_TASK 以您的 Activity 为根创建一个新的后台堆栈。当用户退出它时,他们会被发送回启动器。如果没有FLAG_ACTIVITY_NEW_TASK,您的 Activity 将被添加到现有后台堆栈的顶部。
    猜你喜欢
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多