下面来谈谈notification,这个notification通常用在电话,短 信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提示用户处理这个通知,这时手从上方滑动状态栏就能够展开并处理这个快讯。已添加的 Notification.Builder,使其更容易构建通知。notification是一种让你的应用程序在没有开启状况下或在后台运行警示用户。 它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有须要注意的事件发生的最好途径。android
先来区分如下状态栏和状态条的区别:app
一、状态条就是手机屏幕最上方的一个条形状的区域;ide
在状态条有好多信息量:好比usb链接图标,手机信号图标,电池电量图标,时间图标等等;测试
二、状态栏就是手从状态条滑下来的能够伸缩的view;ui
在状态栏中通常有两类(使用FLAG_标记):this
(1)正在进行的程序;spa
(2)是通知事件;.net
快速建立一个Notification的步骤简单能够分为如下四步:code
第一步:经过getSystemService()方法获得NotificationManager对象;对象
1.
nManager = (NotificationManager)
this
.getSystemService(service);
第二步:对Notification的一些属性进行设置好比:内容,图标,标题,相应notification的动做进行处理等等;
01.
notification.icon = R.drawable.ic_launcher;
// 设置通知的图标
02.
notification.tickerText = tickerText;
// 显示在状态栏中的文字
03.
notification.when = when;
// 设置来通知时的时间
04.
notification.sound = Uri.parse(
"android.resource://com.sun.alex/raw/dida"
); // 自定义声音
05.
notification.flags = Notification.FLAG_NO_CLEAR;
// 点击清除按钮时就会清除消息通知,可是点击通知栏的通知时不会消失
06.
notification.flags = Notification.FLAG_ONGOING_EVENT;
// 点击清除按钮不会清除消息通知,能够用来表示在正在运行
07.
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// 点击清除按钮或点击通知后会自动消失
08.
notification.flags |= Notification.FLAG_INSISTENT;
// 一直进行,好比音乐一直播放,知道用户响应
09.
notification.defaults = Notification.DEFAULT_SOUND;
// 调用系统自带声音
10.
notification.defaults = Notification.DEFAULT_VIBRATE;
// 设置默认震动
11.
notification.defaults = Notification.DEFAULT_ALL;
// 设置铃声震动
12.
notification.defaults = Notification.DEFAULT_ALL;
// 把全部的属性设置成默认
第三步:经过NotificationManager对象的notify()方法来执行一个notification的消息;
1.
nManager.notify(ID, notification);
第四步:经过NotificationManager对象的cancel()方法来取消一个notificatioin的消息;
1.
nManager.cancel(ID);
Notification.build构造Notification方法介绍:
void setLatestEventInfo(Context context , CharSequencecontentTitle,CharSequence contentText,PendingIntent contentIntent)
功能: 显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象
参数: context 上下文环境
contentTitle 状态栏中的大标题
contentText 状态栏中的小标题
contentIntent 点击后将发送PendingIntent对象
说明:要是在Notification中加入图标,在状态栏和状态条中显示图标必定要用这个方法,不然报错!
NotificationManager类的经常使用方法:
经过获取系统服务来获取该对象:
NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE) ;
NotificationManager经常使用方法介绍:
public void cancelAll() 移除全部通知 (只是针对当前Context下的Notification)
public void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的全部Notification)
public void notify(String tag ,int id, Notification notification) 将通知加入状态栏, 标签为tag,标记为id
public void notify(int id, Notification notification) 将通知加入状态栏,,标记为id
01.
package
com.sun.alex;
02.
03.
import
android.app.Activity;
04.
import
android.app.Notification;
05.
import
android.app.NotificationManager;
06.
import
android.app.PendingIntent;
07.
import
android.content.Intent;
08.
import
android.net.Uri;
09.
import
android.os.Bundle;
10.
import
android.view.View;
11.
import
android.view.View.OnClickListener;
12.
import
android.widget.Button;
13.
14.
public
class
NotificationActivity
extends
Activity {
15.
16.
private
Button sendBtn, cancelBtn;
17.
private
Notification notification;
18.
private
NotificationManager nManager;
19.
private
Intent intent;
20.
private
PendingIntent pIntent;
21.
// Notification的标示ID
22.
private
static
final
int
ID =
1
;
23.
24.
@Override
25.
public
void
onCreate(Bundle savedInstanceState) {
26.
super
.onCreate(savedInstanceState);
27.
setContentView(R.layout.main);
28.
29.
sendBtn = (Button)
this
.findViewById(R.id.send);
30.
cancelBtn = (Button)
this
.findViewById(R.id.cancel);
31.
32.
String service = NOTIFICATION_SERVICE;
33.
nManager = (NotificationManager)
this
.getSystemService(service);
34.
35.
notification =
new
Notification();
36.
String tickerText =
"测试Notifaction"
;
// 通知提示
37.
// 显示时间
38.
long
when = System.currentTimeMillis();
39.
40.
notification.icon = R.drawable.ic_launcher;
// 设置通知的图标
41.
notification.tickerText = tickerText;
// 显示在状态栏中的文字
42.
notification.when = when;
// 设置来通知时的时间
43.
notification.sound = Uri.parse(
"android.resource://com.sun.alex/raw/dida"
); // 自定义声音
44.
notification.flags = Notification.FLAG_NO_CLEAR;
// 点击清除按钮时就会清除消息通知,可是点击通知栏的通知时不会消失
45.
notification.flags = Notification.FLAG_ONGOING_EVENT;
// 点击清除按钮不会清除消息通知,能够用来表示在正在运行
46.
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// 点击清除按钮或点击通知后会自动消失
47.
notification.flags |= Notification.FLAG_INSISTENT;
// 一直进行,好比音乐一直播放,知道用户响应
48.
notification.defaults = Notification.DEFAULT_SOUND;
// 调用系统自带声音
49.
notification.defaults = Notification.DEFAULT_SOUND;
// 设置默认铃声
50.
notification.defaults = Notification.DEFAULT_VIBRATE;
// 设置默认震动
51.
notification.defaults = Notification.DEFAULT_ALL;
// 设置铃声震动
52.
notification.defaults = Notification.DEFAULT_ALL;
// 把全部的属性设置成默认
53.
54.
sendBtn.setOnClickListener(sendClickListener);
55.
cancelBtn.setOnClickListener(cancelClickListener);
56.
}
57.
58.
private
OnClickListener sendClickListener =
new
OnClickListener() {
59.
@Override
60.
public
void
onClick(View v) {
61.
// 单击通知后会跳转到NotificationResult类
62.
intent =
new
Intent(NotificationActivity.
this
,
63.
NotificationResult.
class
);
64.
// 获取PendingIntent,点击时发送该Intent
65.
pIntent = PendingIntent.getActivity(NotificationActivity.
this
,
0
,
66.
intent,
0
);
67.
// 设置通知的标题和内容
68.
notification.setLatestEventInfo(NotificationActivity.
this
,
"标题"
,
69.
"内容"
, pIntent);
70.
// 发出通知
71.
nManager.notify(ID, notification);
72.
}
73.
};
74.
75.
private
OnClickListener cancelClickListener =
new
OnClickListener() {
76.
@Override
77.
public
void
onClick(View v) {
78.
// 取消通知
79.
nManager.cancel(ID);
80.
}
81.
};
82.
}