状态通知栏主要涉及到2个类: Notification 和 NotificationManager
Notification为通知信息类,它里面对应了通知栏的各个属性
NotificationManager : 是状态栏通知的管理类,负责发通知、清除通知等操作。
注意:NotificationManager 是一个系统Service,所以必须通过 getSystemService(NOTIFICATION_SERVICE)方法来获取,方法如下。
NotificationManager mNotificationManager = (NotificationManager) Application.getInstance().getSystemService(Context.NOTIFICATION_SERVICE);
创建一个通知
-① 创建 NotificationCompat.Builder 通知栏的Builder构造类,设定通知的UI信息和行为
- 调用NotificationCompat.Builder.build()来创建通知
- 调用NotificationManager.notify()来发送通知
① 通知栏的Builder构造类
NotificationCompat.Builder builder = new NotificationCompat.Builder(MyApplication.getInstance())
② 设定通知的UI信息和行为
mBuilder.setContentTitle("测试标题")//设置通知栏标题 .setContentText("测试内容") //设置通知栏显示内容 .setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) //设置通知栏点击意图 // .setNumber(number) //设置通知集合的数量 .setTicker("测试通知来啦") //通知首次出现在通知栏,带上升动画效果的 .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间 .setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级 // .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消 .setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接) .setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合 //Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission .setSmallIcon(R.drawable.ic_launcher);//设置通知小ICON
必要的通知内容
一条通知必须包含:
- 一个小图标,用setSmallIcon()来设置
- 一条标题,用setContentTitle()来设置
- 详情文字,用setContentText()来设置
可选的通知内容与设置
- 其余所有项目都是可选的,具体参阅NotificationCompat.Builder参考文档
通知的行为
- 虽然是可选项,但是你应当为你的通知添加至少一个行为。
- 行为允许用户直接转向应用中的一个活动。
- 通知可以提供多个行为:
> 你应当总是定义用户点击所触发的行为。这个行为通常是用来打开一个活动。
> 你还可以在通知中添加按钮以执行附加的动作,如延迟一个闹钟或者快速回复一条短信。这个特性从Android 4.1开始可用。
> 如果使用附加行为按钮,那么在你的活动中也必须使这些功能可用。
- 如何定义行为?
> 行为由一个PendingIntent来定义。PendingIntent包含一个用来启动活动的intent
> 为了将PendingIntent与手势相关联,应当调用NotificationCompat.Builder的对应方法。如,如果你想要在点击通知的内容时启动一个活动,则要调用setContentIntent()方法来添加PendingIntent。
参考资料:
Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)