【问题标题】:Android: restore last activity from notificationAndroid:从通知中恢复上次活动
【发布时间】:2013-04-25 21:15:02
【问题描述】:

如果用户点击通知,我的目标是返回到最后一个活动。 我以这种方式在服务 onCreate() 中创建通知:

Intent notificationIntent = new Intent(this, MainActivity.class);

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

但是当我点击通知时,它会转到 MainActivity 而不是点击主页按钮之前打开的最后一个。

在清单中,我尝试使用带有 launchMode="singleTop"、"standard" 和 "singletask" 的 MainActivity,但没有成功。

谢谢。

【问题讨论】:

标签: android


【解决方案1】:

只需使用与 android 启动应用时相同的意图过滤器:

    final Intent notificationIntent = new Intent(context, YourActivity.class);
    notificationIntent.setAction(Intent.ACTION_MAIN);
    notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);

由于您创建的从通知栏打开 Activity 的意图与 android 用于启动应用的意图相同,因此将显示之前打开的 Activity,而不是创建新的。

【讨论】:

    【解决方案2】:

    使用下面的代码..

     contentTitle = "MyApp";
        contentText = "Reopen App";
    notificationIntent = new Intent(this, MainActivity.class);
        contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        notification.setLatestEventInfo(getApplicationContext(), contentTitle, contentText, contentIntent);
    

    并在 Android Manifest 中将 Activity 设置为 SingleTop 或 SingleInstance,然后无需创建新 Activity,而是重新打开仍处于活动状态的 Activity。

    【讨论】:

    • 您只需检查这些链接,您就会得到解决方案。 Custom NotificationLast Activityexample
    • 这条线重要吗? (notification.setLatestEventInfo(getApplicationContext(), contentTitle, contentText, contentIntent);)。因为现在,它已被弃用。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多