【问题标题】:Notification bring app to front without change activity通知将应用程序带到前面而不更改活动
【发布时间】:2013-10-21 09:07:35
【问题描述】:

我想创建通知,当它点击时会将我的应用程序带到前面,但不会更改(重新加载或导航)显示的最后一个活动。

我试过了:

setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT))

但在新的 Android 4.3 中,应用程序被带到了前面,但它也启动了一个 MainActivity 的新实例,我不想要这个。

我希望我的应用从显示的最后一个活动继续。
该怎么做?

【问题讨论】:

标签: android android-intent notifications


【解决方案1】:

添加此“Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP”而不是“Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT

解释here

希望这会有所帮助。

【讨论】:

  • 这无济于事,也不是正确使用此标志。 Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP 仅在您在自己的任务中开始活动时才有用。由于正在启动的 Activity 在另一个任务中(因为它是从通知栏启动的),所以这个标志没有任何作用。
【解决方案2】:

您从未设置过Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT。该标志由 Android 在将活动置于最前面时设置。你设置它没有效果。

有几种方法可以做你想做的事。看看这个answer

【讨论】:

  • @greg7gkb 什么?文档明确指出 “此标志通常不是由应用程序代码设置,而是由系统为您设置,如单任务模式的 launchMode 文档中所述。” 既然它是为您设置的,那么什么是你设置的目的是什么?你不能通过设置这个标志来控制或影响任何行为,那你为什么要设置它呢?
  • 我知道它很旧,但对我没有用,我想分享有效的答案 - stackoverflow.com/a/47329722/2410260
【解决方案3】:

对我来说可行的解决方案是:

    //Resume or restart the app (same as the launcher click)
val resultIntent = Intent(context, MyLauncherActivity::class.java)
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER)
resultIntent.setAction(Intent.ACTION_MAIN)
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pendingIntent = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT)
builder.setContentIntent(pendingIntent)  //builder is the notificationBuilder

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多