一、创建
1,创建通知管理器对通知进行管理
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
(Context.getSystemService(XXX_SERVICE)是使用系统服务的写法,很常用,比如判断网络连接,开关wifi,系统服务名字不同,返回值也不同)
2,根据有参构造函数生成Notification对象
Notification notification = new Notification(R.mipmap.ic_launcher,"This is ticker",System.currentTimeMillis());
第一个参数是通知的图标,第二个参数是通知被创建时系统栏一闪而过的提示信息,第三个参数是通知被创建时的时间
3,设置通知布局 setLatestEventInfo
notification.setLatestEventInfo(context,"This is title","This is content",pi);
第一个参数是Context ,第二个参数是通知标题,第三个参数是通知内容,第四个参数是PendingIntent对象
PendingIntent:与Intent类似,Intent倾向立即去执行某一个动作,PendingIntent 更加倾向在某个合适的时机去执行。可简单理解为延迟执行的Intent
获取PendingIntent对象:PendingIntent调用静态方法(共三个静态方法,分别是getActivity(,,,),getBroadcast(,,,),getService(,,,),可根据需要自己调用,此外这三个方法中都有三个参数)
Intent intent = new Intent(MainActivity.this,NotificationActivity.class);
PendingIntent pi= PendingIntent.getActivity(context,0,intent,FLAG_CANCEL_CURRENT)
第一个参数是context,第二个参数一般用不到,传为0即可,第三个参数为Intent对象,第四个参数用于确定PendingIntent的行为,有
FLAG_ONE_SHOT(得到的pi只能使用一次,下次使用报错) , FLAG_NO_CREATE(pi不存在时不创建,返回null) ,FLAG_CANCEL_CURRENT(每次都创建一个新的pi),FLAG_UPDATE_CURRENT(不存在时就创建,创建好了之后就一直使用它,每次使用都会更新pi的数据)
4.notify
manager.notify(1,notification)
第一个参数是id,在后面会有用,第二个参数是Notification对象,即是刚刚创建的notification
打开通知栏将会看到我们刚刚创建的通知,点击一下,将会跳转到NotificationActivity,但是通知栏的图标并没有消失,我们需要在NotificationActivity中进行处理
获取NotificationManager的对象,然后manager.cancel(1);//1即是我们前面所设的id
二.Notification的一些属性
sound属性
类型:Uri对象
用法:Uri soundUri = Uri.fromFile("路径"); notification.sound = soundUri;
vibrate属性
类型:长整型数组long[]
用法: long[] vibrates = {0,500,500,500,500};notification.vibrate = vibrates;
长整型数组 下标为0表示手机静止时长,下标为1表示手机震动时长,之后再表示静止,再震动,一直下去
还需要声明权限
ledRGB,ledOnMS ,ledOffMS分别表示led前置灯的颜色(红绿蓝),亮起时长(ms),暗去时长(ms)
flags:
指定通知的一些行为,如显示LED灯
notification.falgs = Notification.FALG_SHOW_LIGHTS
如果想使用默认设置:
notification。default = Notification。DEFAULT_ALL