1、概述
最近在使用通知的时候,给通知添加上了点击事件,然后通过通知的Intent来传递数据,打开不同的页面,展示不同的数据。一切都很简单的就完成了,可是当点击通知的时候并没有按照原来的想法展示,通过Debug发现通知的Intent并没有传递数据,所有的数据都是null。下面我们来看看原来的代码是怎么样的,代码如下:
val intent = Intent(context, WelcomeActivity::class.java)
intent.putExtra("key","value")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
builder.setContentIntent(pendingIntent)
使用上面的方法打开界面是没有问题的,可是无法获取数据,获取出的数据为null。
2、解决办法
通过查找资料,发现要能传递数据必须将PendingIntent.getActivity
方法的第二个参数设置为大于0的数即可。下面看看修改后的代码:
val intent = Intent(context, WelcomeActivity::class.java)
intent.putExtra("key","value")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
val pendingIntent = PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT)
builder.setContentIntent(pendingIntent)
从上述代码中可以看出我只修改了PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT)
这个方法,就可以在启动的Activity中获取出通知携带的数据了。至此问题解决,记录一下希望对你们有帮助!