NotificationActivity通过PendingIntent跨Activity传参失败(无效)问题

本文深入解析Android Notification中PendingIntent的作用、创建方法及其在多通知交互过程中的应用技巧,包括如何避免通知内容重复显示的问题,以及如何通过设置requestCode来区分不同的通知信息。同时讨论了在发送多条不同通知时,如何正确利用PendingIntent实现通知内容的正确浏览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用NotificationActivity时需要创建一个PendingIntent对象。PendingIntent对象由android系统负责管理并与应用程序脱离,因此在退出应用程序后该对象仍然不会被释放,NotificationActivity仍然会显示在状态栏。

PendingIntent.getActivity方法可以将创建的PendingIntent对象与一个Activity相关联,代码如下。

Intent intent = new Intent(Context, ActivityClass);

PendingIntent pendingIntent = PendingIntent.getActivity(context, requestCode, intent, flags);

在点击状态栏上的通知时就会打开所关联的Activity,并通过intent 把参数带到新Activity。我原来的写法是

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);                              在我发送了多条不同的通知并点击查看时发现只显示第一次发送的通知,也就是说Extras内容根本没有改变。于是在网上查资料将flags修改为PendingIntent.FLAG_CANCEL_CURRENT(表示有变动时更新Intent里Extras的值)或PendingIntent.FLAG_UPDATE_CURRENT(表示清除前面的Intent重新new一个)但是依然有问题,这次发送多条不同通知点击查看后只显示最后一条。于是又查了一下requestCode的含义,requestCode:请求代码,sender用此代码区分不同的PendingIntent实例对象,由此可见我前面用的是同一个PendingIntent,于是最终代码是

PendingIntent pendingIntent = PendingIntent.getActivity(this, id, intent, PendingIntent.FLAG_CANCEL_CURRENT); 也就是把id作为requestCode用于区分不同的信息,每个信息带一个独立的PendingIntent对象,这样就可以正常浏览不同的通知了。另外还有一点,notificationManager.notify(id, notification);如果发送的通知id都相同,那么前面的通知会被后面的通知替换,状态栏上只会显示最后一条发送的通知。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值