如何使用FLAG_ACTIVITY_SINGLE_TOP从通知导航到活动

时间:2019-06-10 12:34:00

标签: android android-activity notifications

因此,我收到此前台服务通知,并且当用户点击我要导航至我的活动之一时。好的,似乎您只需要向通知生成器提供PendingIntent。

好吧,这似乎很好用...除了用户不想多次点击时,我不想向活动堆栈中添加更多相同的条目。

使用Intent.FLAG_ACTIVITY_SINGLE_TOP ...确定,所以现在我有了这样的东西:

        Notification notification = new NotificationCompat.Builder(context, NotificationChannel.DEFAULT_CHANNEL_ID)
            .setSmallIcon(R.drawable.ic_info)
            .setContentTitle("Title")
            .setContentText("Some nice text here.")
            .setContentIntent(PendingIntent.getActivity(context, 0, Intent intent = new Intent(context, MyAwesomeActivity.class), PendingIntent.FLAG_UPDATE_CURRENT))
            .build();

看起来不错...除非它不起作用。重复点击只会将新条目添加到堆栈中,然后按返回按钮几次将显示同一活动。不好。

我如何使其正常工作?

1 个答案:

答案 0 :(得分:0)

看起来我还不够rtfm。

我在官方的Android文档页面上找到了一个可行的解决方案: https://developer.android.com/training/notify-user/navigation

有效的修订版本:

    Intent intent = new Intent(context, MyAwesomeActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addNextIntentWithParentStack(intent);

    Notification notification = new NotificationCompat.Builder(context, NotificationChannel.DEFAULT_CHANNEL_ID)
            .setSmallIcon(R.drawable.ic_info)
            .setContentTitle("Title")
            .setContentText("Some nice text here.")
            .setContentIntent(stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT))
            .build();