Notification就是在桌面的狀態通知欄。這主要涉及三個主要類: ide
Notification:設置通知的各個屬性。 函數
NotificationManager:負責發送通知和取消通知 ui
Notification.Builder:Notification內之類,建立Notification對象。很是方便的控制全部的flags,同時構建Notification的風格。 this
主要做用: spa
1.建立一個狀態條圖標。 xml
2.在擴展的狀態條窗口中顯示額外的信息(和啓動一個Intent)。 對象
3.閃燈或LED。 事件
4.電話震動。 get
5.發出聽得見的警告聲(鈴聲,保存的聲音文件)。 it
Notification是看不見的程序組件(Broadcast Receiver,Service和不活躍的Activity)警示用戶有須要注意的事件發生的最好途徑
下面主要介紹這三個類:
1、NotificationManager
這個類是這三個類中最簡單的。主要負責將Notification在狀態顯示出來和取消。主要包括5個函數:void cancel(int id), void cancel(String tag, int id), void cancelAll(), void notify(int id, Notification notification), notify(String tag, int id, Notification notification)
看看這五個函數就知道這個類的做用了。可是在初始化對象的時候要注意:
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
2、Notification
設置這個類主要是設置Notification的相關屬性。初始化
Notification n = new Notification();
Notification裏面有不少屬性下面選擇幾個經常使用的介紹一下
icon 這個是設置通知的圖標。像QQ的小企鵝
sound 這個是設置來通知時的提示音。
tickerText 設置提示的文字。
vibrate 來通知時振動。
when 設置來通知時的時間
flag 這個頗有意思是設置通知在狀態欄顯示的方式。它的值能夠設置爲蝦米這些值:
FLAG_NO_CLEAR 將flag設置爲這個屬性那麼通知欄的那個清楚按鈕就不會出現
FLAG_ONGOING_EVENT 將flag設置爲這個屬性那麼通知就會像QQ同樣一直在狀態欄顯示
DEFAULT_ALL 將全部屬性設置爲默認
DEFAULT_SOUND 將提示聲音設置爲默認
DEFAULT_VIBRATE 將震動設置爲默認
3、Notification.Builder
這個類通常用於管理Notification,動態的設置Notification的一些屬性。即用set來設置。也沒啥好說的。
看一個例子:這個例子還須要在xml中添加兩個按鈕
Java代碼
1 publicclassMainextendsActivity{
2 privateButtonsendBtn,cancelBtn;
3 privateNotificationn;
4 privateNotificationManagernm;
5 //Notification的標示ID
6 privatestaticfinalintID=1;
7
8 @Override
9 publicvoidonCreate(BundlesavedInstanceState){
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.main);
12
13 //實例化按鈕
14 sendBtn=(Button)this.findViewById(R.id.sendBtn);
15 cancelBtn=(Button)this.findViewById(R.id.cancelBtn);
16
17 //獲取NotificationManager實例
18 Stringservice=NOTIFICATION_SERVICE;
19 nm=(NotificationManager)this.getSystemService(service);
20
21 //實例化Notification
22 n=newNotification();
23 //設置顯示圖標,該圖標會在狀態欄顯示
24 inticon=R.drawable.icon;
25 //設置顯示提示信息,該信息也會在狀態欄顯示
26 StringtickerText="TestNotifaction";
27 //顯示時間
28 longwhen=System.currentTimeMillis();
29
30 n.icon=icon;
31 n.tickerText=tickerText;
32 n.when=when;
33 n.flags=Notification.FLAG_NO_CLEAR;
34 n.flags=Notification.FLAG_ONGOING_EVENT;
35
36 //爲按鈕添加監聽器
37 sendBtn.setOnClickListener(sendClickListener);
38 cancelBtn.setOnClickListener(cancelClickListener);
39 }
40
41 privateOnClickListenersendClickListener=newOnClickListener(){
42
43 @Override
44 publicvoidonClick(Viewv){
45 //實例化Intent
46 Intentintent=newIntent(Main.this,Main.class);
47 //獲取PendingIntent
48 PendingIntentpi=PendingIntent.getActivity(Main.this,0,intent,0);
49 //設置事件信息
50 n.setLatestEventInfo(Main.this,"MyTitle","MyContent",pi);
51 //發出通知
52 nm.notify(ID,n);
53
54 }
55 };
56
57 privateOnClickListenercancelClickListener=newOnClickListener(){
58
59 @Override
60 publicvoidonClick(Viewv){
61 nm.cancel(ID);
62 }
63 };