android - 如何从带有 FLAG_ACTIVITY_SINGLE_TOP 的通知导航到活动
问题描述
所以我有这个前台服务通知,当用户点击我想导航到我的一项活动时。好的,似乎您只需要向通知生成器提供一个 PendingIntent 。
好的,这似乎工作正常......除了我不想在用户多次点击时向活动堆栈添加更多相同的条目。
使用 Intent.FLAG_ACTIVITY_SINGLE_TOP...OK,所以现在我有这样的东西:
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 文档页面上找到了一个可行的解决方案: 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();
推荐阅读
- symfony4 - Symfony 4 / FosREST:API 路由返回 404 但不是 web 路由
- python - 如何计算熊猫列中带有日期时间的日期的剩余月份?
- c++ - 如何从http响应中删除垃圾数据
- .net - 如何修复应用服务的 Azure 部署槽问题?
- angular - 如何获取以前的搜索结果?
- asp.net-core - Razor Pages ASP.NET 不显眼的 ajax 发布部分更新
- php - 如何转换 1.5xxE-5
- javascript - ng-model 绑定没有正确更新
- javascript - React - Ant 设计,带有 getFieldDecorator 和 initialValue 的表单在单个复选框中不起作用
- angular - 无法从 firebase 实时数据库中检索数据