因此,我收到此前台服务通知,并且当用户点击我要导航至我的活动之一时。好的,似乎您只需要向通知生成器提供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();
看起来不错...除非它不起作用。重复点击只会将新条目添加到堆栈中,然后按返回按钮几次将显示同一活动。不好。
我如何使其正常工作?
答案 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();