【问题标题】:Android notification opens last activity instead of proper activityAndroid 通知打开最后一个活动而不是正确的活动
【发布时间】:2013-06-19 06:56:45
【问题描述】:

我有点问题,看了很多地方我似乎找不到答案。

我有一项服务,该服务检查网站上的通知并提醒用户有新通知。当用户点击这个通知时,它应该把他们带到一个 Activity(我称之为 CommentActivity)

但是,如果我单击应用程序内的通知,则什么也没有发生。如果我点击应用外的通知,它会打开应用关闭之前显示的最后一个活动。

这是我显示通知的代码:

        Notice n; //Notification from site

        ....
        Intent nIntent = new Intent(Intent.ACTION_MAIN);
        nIntent.setClass(getApplicationContext(), CommentActivity.class);
        nIntent.putExtra("activity_id", n.getFeedID());
        nIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, nIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(FlankNotificationService.this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle(n.getTitle())
        .setContentText(n.getText())
        .setContentInfo(arg0.getNotificationAmount() + " notification" + (arg0.getNotificationAmount() == 1 ? "." : "s."))
        .setContentIntent(pIntent);

        Notification mm = mBuilder.getNotification();

        mm.flags = Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL;
        mm.tickerText = n.getText();

        ....

        mNM.notify(1558, mm);

因此,它不会打开 CommentActivity,而是恢复应用程序(如果应用程序未打开)或什么也不做(如果应用程序已打开)

谢谢。

编辑 1:

在 Intent 中添加了 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志。仍然没有解决问题。

编辑 2:

我找到了问题的原因(这是一个相当愚蠢的原因)。当 CommentActivity 启动时,如果它没有从 savedInstance 或 Intent.getExtra 获得任何数据,那么它将关闭。一开始我没有想到这个的原因是因为它甚至没有显示过渡。修复 Intent.getExtra 问题后,它现在可以工作了。谢谢大家的回答。

【问题讨论】:

  • 这就是它应该做的。就像再次单击启动器中的应用程序图标一样。如果您希望此活动始终显示,请在清单中使用 android:clearTaskOnLaunch="true" 标记您的活动。
  • 将其添加到 CommentActivity?我试过了,还是没有解决问题。
  • +1 这里是最好的解决方案stackoverflow.com/questions/31448840/…

标签: java android android-intent notifications android-pendingintent


【解决方案1】:

您可能希望将 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志添加到您的 Intent。这将确保CommentActivity 是在处理意图时恢复且处于活动状态的 Activity。

【讨论】:

  • 添加flag后还是没有解决问题。我已经用添加标志的新代码更新了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多