Android 通知栏 PendingIntent.getActivity(context, requestCode, intent, flags);参数详解
来源:互联网 发布:惊艳口红推荐知乎 编辑:程序博客网 时间:2024/06/17 01:08
写这个博客的原因是,我曾在项目中被Android通知栏坑了好久。由于个人能力的原因,以及其他原因,一直拖了好久,才解决。
不知道大家有没有遇到过这种问题:
通过下面的方法创建三个通知:
public void notify(String desc) { Intent perIntent = new Intent(context, TestActivity.class); perIntent.putExtra("desc", desc); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, perIntent, PendingIntent.FLAG_UPDATE_CURRENT); // 创建一个通知 Notification.Builder builder = new Notification.Builder(context); builder.setSmallIcon(R.drawable.ic_launcher)// .setContentText(desc)// .setContentTitle(desc)// .setTicker(desc)// .setContentIntent(pendingIntent)// .setShowWhen(false);// Notification notification = null; notification = builder.build(); notification.flags |= Notification.FLAG_AUTO_CANCEL; nManager.notify(notifyId++, notification);// id是应用中通知的唯一标识 }
通知如图所示:
当我分别点击这三个通知,效果如下所示:
大家看出来问题了吧,点击进去之后,在TestActivity类里面,通过下面的方法获取到的值都是一样的,而且都是:通知3,
descText.setText(getIntent().getStringExtra("desc"));
这个问题是怎么产生的呢?原因是:PendingIntent.getActivity(context, 0, perIntent,
PendingIntent.FLAG_UPDATE_CURRENT);这句话的第二个参数 requestCode,我设置的值:0,由于我创建的三个通知,requestCode值相同,并且第四个参数PendingIntent.FLAG_UPDATE_CURRENT,导致后创建的通知会更新之前的通知的perIntent参数,因此每次点击通知后,获取到的参数永远是最后的那个。
解决方法:PendingIntent.getActivity(context, requestCode, perIntent,
PendingIntent.FLAG_UPDATE_CURRENT);,设置requestCode为不同的值,就行了,在高手眼中可能很简单,但是对于新手来说,却是很头疼的坑。
现在重新运行程序,你会发现达到了我们的预期效果
源码下载:
http://download.csdn.net/download/waa_0618/9740491
0 0
- Android 通知栏 PendingIntent.getActivity(context, requestCode, intent, flags);参数详解
- android 多通知 参数问题, PendingIntent:有用的requestCode参数
- android 多通知 参数问题, PendingIntent:有用的requestCode参数
- 【Android 非常基础】多通知 PendingIntent.getActivity参数使用
- android PendingIntent:有用的requestCode参数
- android Intent Flags详解
- android Intent、pendingIntent机制详解
- Context类bindService(Intent service, ServiceConnection conn, int flags)参数
- PendingIntent android.app.PendingIntent.getActivity的使用
- PendingIntent requestCode
- Android消息通知PendingIntent传递参数出问题
- android 通知覆盖以及PendingIntent参数问题
- (转)Android中的Pending.getActivity()参数详解
- PendingIntent getActivity
- 推送通知栏 PendingIntent 参数解读
- android startActivityForResult(Intent intent, int requestCode)用法
- PendingIntent和Intent详解
- Android intent flags(待续)
- 基于Qt的图表库
- openvas更改监听IP地址
- 6U OpenVPX单板计算机 xPower6110
- UDP通信发送数据的问题
- JavaScript 语法
- Android 通知栏 PendingIntent.getActivity(context, requestCode, intent, flags);参数详解
- 复习C语言———《C Prime Plus(第六版)》 第8章~第12章
- (c++)一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子
- 【JS】函数 Number()、parseInt()、parseFloat()以及Number.toFixed(x) 、 Number.toPrecision(x) 、 Math.Round(x)
- Android HTTPS、TLS版本支持相关解决方案
- 【BZOJ 3545】 [ONTAK2010]Peaks 最小生成树+kruskal重构树
- Gradle Plugin和Gradle版本
- 尚硅谷java学习笔记——11.java多线程
- 【HDU 2039】三角形 水