Android Notification 用法
来源:互联网 发布:retrofit2 json解析 编辑:程序博客网 时间:2024/06/06 09:01
notification在网上能搜索到很多,但是有时候时间长不用就会忘记,为了以后用到时能直接用在此写下notification的用法。大概步骤只有这4步:
1. 得到NotificationManager对象
2. 建立Notification对象
3. 关联点击notification跳转的Intent对象
4. 执行
1.自定义notification
//得到NotificationManager对象NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);//建立Notification对象Notification myNotify = new Notification(); //关联IntentIntent intent = new Intent(this,TestDate.class); intent.putExtra("test", "ceshi");PendingIntent contentIntent = PendingIntent.getActivity(this,1,intent, 1); //myNotify.contentIntent = contentIntent; //这一行代码放在下面代码设置属性中(这一行是notification关联Intent)//设置notification的属性myNotify.icon = R.drawable.ic_launcher;myNotify.tickerText = "新消息来啦"; myNotify.when = System.currentTimeMillis(); myNotify.flags = Notification.FLAG_NO_CLEAR;//不能左滑清除 myNotify.contentIntent = contentIntent; //自定义notification布局RemoteViews rv = new RemoteViews(getPackageName(),R.layout.notification); rv.setTextViewText(R.id.text, "消息内容"); rv.setImageViewResource(R.id.imageview,R.drawable.ic_launcher);myNotify.contentView = rv; //执行notificationmanager.notify(1, myNotify);
//跳转到TestDate(Activity)if(getIntent()!=null && getIntent().getExtras()!=null && getIntent().getExtras().containsKey("test")){String str=getIntent().getExtras().getString("test");//点击notification得到的数据}
2.系统notification
//得到NotificationManager对象NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);//关联点击notification跳转的Intent对象Intent intent = new Intent(this,TestDate.class); intent.putExtra("test", "ceshi");PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent , 0); //建立Notification对象Notification notify = new Notification.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setTicker("新消息来啦") .setContentTitle("notification标题") .setContentText("notification内容") .setContentIntent(pendingIntent) .setWhen(System.currentTimeMillis()); .setNumber(1) .build(); notify.flags=Notification.FLAG_AUTO_CANCEL;//用户点击或者左滑notification可以消失//执行 manager.notify(1, notify);
//跳转到TestDate(Activity)if(getIntent()!=null && getIntent().getExtras()!=null && getIntent().getExtras().containsKey("test")){String str=getIntent().getExtras().getString("test");//点击notification得到的数据}
上面的代码基本已经实现notification,但是我们发现连续点击执行notification时,通知栏只会有一个notification,接下来就来解决这个问题
分为3中情况:注意观察PendingIntent 中第二个参数以及执行通知中manager.notify(1, notification);第一个参数
1执行多次通知栏永远只会显示一条
int count++; //得到NotificationManager对象 NotificationManager manager=(NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); //定义notification Notification notification=new Notification(R.drawable.ic_launcher,"新消息来了",System.currentTimeMillis()); notification.flags=Notification.FLAG_AUTO_CANCEL;//是否能删除 notification.number=count; //通知消息与Intent关联 Intent intent=new Intent(MainActivity.this,TestDate.class); intent.putExtra("test", "ceshi"+count); PendingIntent pendingIntent =PendingIntent.getActivity(MainActivity.this, 10, intent, PendingIntent.FLAG_CANCEL_CURRENT);//具体的通知内容 notification.setLatestEventInfo(MainActivity.this, "标题", "执行多次通知只显示一条",pendingIntent ); //执行通知 manager.notify(1,notification);
//跳转到TestDate(Activity)if(getIntent()!=null && getIntent().getExtras()!=null && getIntent().getExtras().containsKey("test")){String str=getIntent().getExtras().getString("test");//点击notification得到的数据}
这是因为manager.notify(1,notification)的requestCode(第一个参数)全相同导致的。
2执行多次通知,并且显示多条,但只能用最新的一条跳转至活动
int count++; //得到NotificationManager对象 NotificationManager manager=(NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); //定义notification Notification notification=new Notification(R.drawable.ic_launcher,"新消息来了",System.currentTimeMillis()); notification.flags=Notification.FLAG_AUTO_CANCEL;//是否能删除 notification.number=count; //通知消息与Intent关联 Intent intent=new Intent(MainActivity.this,TestDate.class); intent.putExtra("test", "ceshi"+count); PendingIntent pendingIntent =PendingIntent.getActivity(MainActivity.this, 10, intent, PendingIntent.FLAG_CANCEL_CURRENT);//具体的通知内容 notification.setLatestEventInfo(MainActivity.this, "标题", "执行多次通知只显示一条",pendingIntent ); //执行通知 manager.notify(count,notification);
//跳转到TestDate(Activity)if(getIntent()!=null && getIntent().getExtras()!=null && getIntent().getExtras().containsKey("test")){String str=getIntent().getExtras().getString("test");//点击notification得到的数据}
这是因为PendingIntent的requestCode(第二个参数)全相同导致的。
3 执行多次通知,并且显示多条,每一条通知都能跳转至对应的活动
int count++; //得到NotificationManager对象 NotificationManager manager=(NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); //定义notification Notification notification=new Notification(R.drawable.ic_launcher,"新消息来了",System.currentTimeMillis()); notification.flags=Notification.FLAG_AUTO_CANCEL;//是否能删除 notification.number=count; //通知消息与Intent关联 Intent intent=new Intent(MainActivity.this,TestDate.class); intent.putExtra("test", "ceshi"+count); PendingIntent pendingIntent =PendingIntent.getActivity(MainActivity.this, count, intent, PendingIntent.FLAG_CANCEL_CURRENT);//具体的通知内容 notification.setLatestEventInfo(MainActivity.this, "标题", "执行多次通知只显示一条",pendingIntent ); //执行通知 manager.notify(count,notification);
//跳转到TestDate(Activity)if(getIntent()!=null && getIntent().getExtras()!=null && getIntent().getExtras().containsKey("test")){String str=getIntent().getExtras().getString("test");//点击notification得到的数据}
这是因为manager.notify(count,notification)的requestCode(第一个参数)和PendingIntent的requestCode(第二个参数)每次都不相同导致的。
总结:通俗的讲,manager.notify(count,notification)的requestCode(第一个参数)是指通知栏notification是否可以显示多条(每次的requestCode不同则可以显示多条),PendingIntent的requestCode(第二个参数)是指每一个nitification是否可点击(每次的requestCode不同则全部可以点击;相同的话只有最新的一条可以点击,其他的不可点击)。
- Android Notification 用法
- android notification 的用法
- android notification的用法
- Android Notification用法
- Android基础-Notification用法
- Android通知Notification用法
- Android Notification 用法
- android Notification简单用法
- Android中Notification的用法
- Android的Notification的用法
- android sdk --- Notification用法实例
- android app notification的用法
- Android Notification的多种用法
- android中Notification的用法
- android通知栏Notification用法
- Android Notification的多种用法
- Android Notification.setLatestEventInfo弃用和Notification.Builder用法
- Android Notification.setLatestEventInfo弃用和Notification.Builder用法
- 前端面试题网站集
- android 动态设置横竖屏切换 控制dialog等布局文件加载的方法
- 2016-06-21课程设计日志
- 29. Divide Two Integers
- 数据结构 - 树和二叉树的基本运算实现
- Android Notification 用法
- Java运行Python脚本的几种方式
- Search a 2D Matrix II
- Volley
- 吉他学习<1>曲谱
- sideload刷机
- 数字和字母组成,并且要同时含有数字和字母
- Git_SSH公钥生成
- 线程