通知(Notifycation)是android中比较有特色的一功能,用于给用户提示信息,显示在手机最上方状态栏中,我们经常看到状态栏中出现的小图标,下啦后就可以看到通知的详细内容。
通知的用法
//首先获取到NotifycationManager来对通知进行管理
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//点击通知的跳转
Intent intent = new Intent(this,MainActivity.class);
PendingIntent pendingIntent PendingIntent.getActivity(this,0,intent,0);
//通知栏的创建 support-v4库中提供了一个notificationCompat类,使用这个类的构造器来创建Notification对象,就可以
//保证我们所有程序在所有android系统版本上都能正常工作。
//构建一个通知
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is content title") //指定通知栏的标题
.setContentText("this is content text") //指定通知栏的正文内容
.setWhen(System.currentTimeMillis()) //指定通知被创建的时间
.setSmallIcon(R.drawable.img1) //设置通知的小图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.img2))//设置通知的大图标
.setSound(Uri.fromFile(new File("路径")))//设置通知发出的时候放一段音频
.setVibrate(new long[]{0, 1000, 1000, 1000}) //设置手机的震动 和静止的时长 震动1秒,静止1秒,在震动1秒
.setLights(Color.GREEN, 1000, 1000)//设置LED等闪烁 颜色 LED亮起1秒 暗去1秒 答到一闪一闪的效果
.setContentIntent(pendingIntent)//设置通知的跳转
.setAutoCancel(true) //表示点击这个通知的时候,通知会自动消失
.build();
//通过NotificationManager 的notify()方法显示通知
//nofify接收两个参数 第一个参数是id 要保证每个通知所指定的id都是不同的,第二个参数就是Notifycation对象了。
manager.notify(1, notification);
通知的点击 PendingIntent
PendingIntent从名字看起来就和Intnet类似,用法很简单通过 getActivity()、getBrodcast()、getService()。获取实例
这个几个方法所接收的参数:第一个Context,第二个一般用不到传入0即可,第三个是Intent对象,第四个是确定PendingIntent的行为,有:
FLAG_ONE_SHOT
FLAG_NO_CREATE
FLAG_CANCEL_CURRENT
FLAG_UPDATE_CURRENT
,通常情况下也是传入0 就可以了。
manager.cancel(1);
调用manager.cancel 取消通知,传入了一个1 ,这个1 就是通知的 id ,上面设置了通知的 id 就是1 ,传入相对应的通知id 即可。
设置了通知的震动需要加入相应权限 android.Permission.VIBRATE
上面的通知设置了很多属性,其实也可以直接使用通知的默认效果,它会根据当前的手机环境来决定播放上面铃声,以及如何震动。
.setDefaults(NotificationCompat.DEFAULT_ALL)
在通知中显示一段很长得文字,通过setStyle(),下面是用法
.setStyle(new NotificationCompat.BigTextStyle().bigText("显示所有内容文字")) //显示完整的通知文字
设置显示一张大图片
.setStyle(new NotificationCompat.BigPictureStyle().bigLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.img2))) //显示一张图片
设置通知的重要程度,一共有5个常亮值可选:
PRIORITY_DEFAULT 表示默认的重要程度。
PRIORITY_MIN 表示最低的重要程度。
PRIORITY_HIGH 表示较高的重要程度,系统可能会将这类通知放大,或改变其显示的顺序,将其排在比较靠前的位置。
PRIORITY_MAX表示最高的重要程度,这类通知消息必须要让用户立刻看到,甚至需要用户做出响应操作。
.setPriority(NotificationCompat.PRIORITY_MAX) //设置通知的重要程度