Andriod-NotificationManager

下面來談談notification,這個notification一般用在電話,短信,郵件,鬧鐘鈴聲,在手機的狀態欄上就會出現一個小圖標,提示用戶處理這個通知,這時手從上方滑動狀態欄就可以展開並處理這個快訊。已添加的Notification.Builder,使其更容易構建通知。notification是一種讓你的應用程序在沒有開啓情況下或在後臺運行警示用戶。它是看不見的程序組件(Broadcast Receiver,Service和不活躍的Activity)警示用戶有需要注意的事件發生的最好途徑。
先來區分以下狀態欄和狀態條的區別:

1、狀態條就是手機屏幕最上方的一個條形狀的區域;

在狀態條有好多信息量:比如usb連接圖標,手機信號圖標,電池電量圖標,時間圖標等等;

2、狀態欄就是手從狀態條滑下來的可以伸縮的view;

在狀態欄中一般有兩類(使用FLAG_標記):

(1)正在進行的程序;

(2)是通知事件;

快速創建一個Notification的步驟簡單可以分爲以下四步:

第一步:通過getSystemService()方法得到NotificationManager對象;

Java代碼 收藏代碼
  1. nManager = (NotificationManager) this.getSystemService(service);

    第二步:對Notification的一些屬性進行設置比如:內容,圖標,標題,相應notification的動作進行處理等等;

    Java代碼 收藏代碼
    1. notification.icon = R.drawable.ic_launcher;// 設置通知的圖標 
    2. notification.tickerText = tickerText; // 顯示在狀態欄中的文字 
    3. notification.when = when; // 設置來通知時的時間 
    4. notification.sound = Uri.parse("android.resource://com.sun.alex/raw/dida"); // 自定義聲音 
    5. notification.flags = Notification.FLAG_NO_CLEAR; // 點擊清除按鈕時就會清除消息通知,但是點擊通知欄的通知時不會消失 
    6. notification.flags = Notification.FLAG_ONGOING_EVENT; // 點擊清除按鈕不會清除消息通知,可以用來表示在正在運行 
    7. notification.flags |= Notification.FLAG_AUTO_CANCEL; // 點擊清除按鈕或點擊通知後會自動消失 
    8. notification.flags |= Notification.FLAG_INSISTENT; // 一直進行,比如音樂一直播放,知道用戶響應 
    9. 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的消息;

      Java代碼 收藏代碼
      1. nManager.notify(ID, notification);

        第四步:通過NotificationManager對象的cancel()方法來取消一個notificatioin的消息;

        Java代碼 收藏代碼
        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

          Java代碼 收藏代碼
          1. package com.sun.alex; 
          2. import android.app.Activity; 
          3. import android.app.Notification; 
          4. import android.app.NotificationManager; 
          5. import android.app.PendingIntent; 
          6. import android.content.Intent; 
          7. import android.net.Uri; 
          8. import android.os.Bundle; 
          9. import android.view.View; 
          10. import android.view.View.OnClickListener; 
          11. import android.widget.Button; 
          12. public class NotificationActivity extends Activity { 
          13. private Button sendBtn, cancelBtn; 
          14. private Notification notification; 
          15. private NotificationManager nManager; 
          16. private Intent intent; 
          17. private PendingIntent pIntent; 
          18. // Notification的標示ID 
          19. private static final int ID = 1; 
          20. @Override 
          21. public void onCreate(Bundle savedInstanceState) { 
          22. super.onCreate(savedInstanceState); 
          23. setContentView(R.layout.main); 
          24. sendBtn = (Button) this.findViewById(R.id.send); 
          25. cancelBtn = (Button) this.findViewById(R.id.cancel); 
          26. String service = NOTIFICATION_SERVICE; 
          27. nManager = (NotificationManager) this.getSystemService(service); 
          28. notification = new Notification(); 
          29. String tickerText = "測試Notifaction"; // 通知提示 
          30. // 顯示時間 
          31. long when = System.currentTimeMillis(); 
          32. notification.icon = R.drawable.ic_launcher;// 設置通知的圖標 
          33. notification.tickerText = tickerText; // 顯示在狀態欄中的文字 
          34. notification.when = when; // 設置來通知時的時間 
          35. notification.sound = Uri.parse("android.resource://com.sun.alex/raw/dida"); // 自定義聲音 
          36. notification.flags = Notification.FLAG_NO_CLEAR; // 點擊清除按鈕時就會清除消息通知,但是點擊通知欄的通知時不會消失 
          37. notification.flags = Notification.FLAG_ONGOING_EVENT; // 點擊清除按鈕不會清除消息通知,可以用來表示在正在運行 
          38. notification.flags |= Notification.FLAG_AUTO_CANCEL; // 點擊清除按鈕或點擊通知後會自動消失 
          39. notification.flags |= Notification.FLAG_INSISTENT; // 一直進行,比如音樂一直播放,知道用戶響應 
          40. notification.defaults = Notification.DEFAULT_SOUND; // 調用系統自帶聲音 
          41. notification.defaults = Notification.DEFAULT_SOUND;// 設置默認鈴聲 
          42. notification.defaults = Notification.DEFAULT_VIBRATE;// 設置默認震動 
          43. notification.defaults = Notification.DEFAULT_ALL; // 設置鈴聲震動 
          44. notification.defaults = Notification.DEFAULT_ALL; // 把所有的屬性設置成默認 
          45. sendBtn.setOnClickListener(sendClickListener); 
          46. cancelBtn.setOnClickListener(cancelClickListener); 
          47. private OnClickListener sendClickListener = new OnClickListener() { 
          48. @Override 
          49. public void onClick(View v) { 
          50. // 單擊通知後會跳轉到NotificationResult類 
          51. intent = new Intent(NotificationActivity.this, 
          52. NotificationResult.class); 
          53. // 獲取PendingIntent,點擊時發送該Intent 
          54. pIntent = PendingIntent.getActivity(NotificationActivity.this, 0, 
          55. intent, 0); 
          56. // 設置通知的標題和內容 
          57. notification.setLatestEventInfo(NotificationActivity.this, "標題", 
          58. "內容", pIntent); 
          59. // 發出通知 
          60. nManager.notify(ID, notification); 
          61. }; 
          62. private OnClickListener cancelClickListener = new OnClickListener() { 
          63. @Override 
          64. public void onClick(View v) { 
          65. // 取消通知 
          66. nManager.cancel(ID); 
          67. }; 
          68. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章