Notification(状态栏通知)

Notification(状态栏通知)_第1张图片

1.   上面的组成元素依次是:

Icon/Photo:大图标

Title/Name:标题

Message:内容信息

Timestamp:通知时间,默认是系统发出通知的时间,也可以通过setWhen()来设置

Secondary Icon:小图标

2.   状态通知栏主要涉及到2个类:Notification 和NotificationManager

Notification:通知信息类,它里面对应了通知栏的各个属性

NotificationManager:是状态栏通知的管理类,负责发通知、清除通知等操作。

3.  Step 1. 获得NotificationManager对象: NotificationManager mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);


获得NotificationManager对象

Step 2. 创建一个通知栏的Builder构造类: Notification.Builder mBuilder = new Notification.Builder(this);


创建一个通知栏的Builder构造类

Step 3. 对Builder进行相关的设置,比如标题,内容,图标,动作等!


Notification(状态栏通知)_第2张图片
对Builder进行相关的设置,比如标题,内容,图标,动作等

Step 4.调用Builder的build()方法为notification赋值


.调用Builder的build()方法为notification赋值

Step 5.调用NotificationManager的notify()方法发送通知


.调用NotificationManager的notify()方法发送通知

PS:另外我们还可以调用NotificationManager的cancel()方法取消通知

4.  设置相关的一些方法:

Notification.Builder mBuilder = new Notification.Builder(this);

后再调用下述的相关的方法进行设置:(官方API文档:Notification.Builder) 常用的方法如下:

setContentTitle(CharSequence):设置标题

setContentText(CharSequence):设置内容

setSubText(CharSequence):设置内容下面一小行的文字

setTicker(CharSequence):设置收到通知时在顶部显示的文字信息

setWhen(long):设置通知时间,一般设置的是收到通知时的System.currentTimeMillis()

setSmallIcon(int):设置右下角的小图标,在接收到通知的时候顶部也会显示这个小图标

setLargeIcon(Bitmap):设置左边的大图标

setAutoCancel(boolean):用户点击Notification点击面板后是否让通知取消(默认不取消)

setDefaults(int):向通知添加声音、闪灯和振动效果的最简单、 使用默认(defaults)属性,可以组合多个属性,

�Notification.DEFAULT_VIBRATE(添加默认震动提醒);

�Notification.DEFAULT_SOUND(添加默认声音提醒);

�Notification.DEFAULT_LIGHTS(添加默认三色灯提醒

)�Notification.DEFAULT_ALL(添加默认以上3种全部提醒)


Notification(状态栏通知)_第3张图片

5.  setContentIntent(PendingIntent):PendingIntent和Intent略有不同,它可以设置执行次数, 主要用于远程服务通信、闹铃、通知、启动器、短信中,在一般情况下用的比较少。比如这里通过 Pending启动Activity:getActivity(Context, int, Intent, int),当然还可以启动Service或者Broadcast PendingIntent的位标识符(第四个参数):

FLAG_ONE_SHOT 表示返回的PendingIntent仅能执行一次,执行完后自动消

�FLAG_NO_CREATE 表示如果描述的PendingIntent不存在,并不创建相应的PendingIntent,而是返回NULL

�FLAG_CANCEL_CURRENT 表示相应的PendingIntent已经存在,则取消前者,然后创建新的PendingIntent, 这个有利于数据保持为最新的,可以用于即时通信的通信场景


你可能感兴趣的:(Notification(状态栏通知))