Android 如何从带有标志\u activity\u SINGLE\u TOP的通知导航到活动

Android 如何从带有标志\u activity\u SINGLE\u TOP的通知导航到活动,android,android-activity,notifications,Android,Android Activity,Notifications,因此,我有这个前台服务通知,当用户点击时,我想导航到我的一个活动。好的,看起来您只需要向通知生成器提供一个挂起的内容 好的,这似乎很好…除了我不想在用户多次点击时向活动堆栈添加更多相同的条目 使用Intent.FLAG\u ACTIVITY\u SINGLE\u TOP…好的,现在我有了如下内容: Intent intent = new Intent(context, MyAwesomeActivity.class); intent.setFlags(Intent.FLAG_AC

因此,我有这个前台服务通知,当用户点击时,我想导航到我的一个活动。好的,看起来您只需要向通知生成器提供一个挂起的内容

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

使用Intent.FLAG\u ACTIVITY\u SINGLE\u TOP…好的,现在我有了如下内容:

    Intent intent = new Intent(context, MyAwesomeActivity.class);
    intent.setFlags(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, PendingIntent.FLAG_UPDATE_CURRENT))
            .build();
看起来不错…只是不起作用。重复点击只需将新条目添加到堆栈中,然后按后退按钮多次显示相同的活动。不太好


如何使其正常工作?

看起来我的rtfm不够

我在官方Android文档页面上找到了一个可行的解决方案:

有效的修订版本:

    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();

想和大家分享一下你为什么否决了这个吗?作为一个刚接触Android的人,我把这个放在这里是为了其他可能也会这样做的人。好吧,看起来我把问题中的代码部分搞乱了……现在应该修复了。