Android通知会打开上一个活动而不是正确的活动

时间:2013-06-22 03:57:21

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

我遇到了一些问题,在很多地方看过我似乎无法找到答案。

我有一项服务,此服务会检查网站上的通知并向用户发出新通知的提醒。当用户点击此通知时,它应该将它们带到一个活动(我称之为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问题后,它现在可以正常工作。谢谢你的所有答案。

1 个答案:

答案 0 :(得分:0)

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