Android中的消息通知(NotificationManager和Notification)

 

下面來談談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. }
相關文章
相關標籤/搜索