Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中的消息通知(NotificationManager和Notification)

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

編輯:關於Android編程

下面來談談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. }
          48. private OnClickListener sendClickListener = new OnClickListener() {
          49. @Override
          50. public void onClick(View v) {
          51. // 單擊通知後會跳轉到NotificationResult類
          52. intent = new Intent(NotificationActivity.this,
          53. NotificationResult.class);
          54. // 獲取PendingIntent,點擊時發送該Intent
          55. pIntent = PendingIntent.getActivity(NotificationActivity.this, 0,
          56. intent, 0);
          57. // 設置通知的標題和內容
          58. notification.setLatestEventInfo(NotificationActivity.this, "標題",
          59. "內容", pIntent);
          60. // 發出通知
          61. nManager.notify(ID, notification);
          62. }
          63. };
          64. private OnClickListener cancelClickListener = new OnClickListener() {
          65. @Override
          66. public void onClick(View v) {
          67. // 取消通知
          68. nManager.cancel(ID);
          69. }
          70. };
          71. }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved