-
下面來談談notification,這個notification一般用在電話,短信,郵件,鬧鐘鈴聲,在手機的狀態欄上就會出現一個小圖標,提示用戶處理這個通知,這時手從上方滑動狀態欄就可以展開並處理這個快訊。已添加的Notification.Builder,使其更容易構建通知。notification是一種讓你的應用程序在沒有開啓情況下或在後臺運行警示用戶。它是看不見的程序組件(Broadcast Receiver,Service和不活躍的Activity)警示用戶有需要注意的事件發生的最好途徑。
先來區分以下狀態欄和狀態條的區別:1、狀態條就是手機屏幕最上方的一個條形狀的區域;
在狀態條有好多信息量:比如usb連接圖標,手機信號圖標,電池電量圖標,時間圖標等等;
2、狀態欄就是手從狀態條滑下來的可以伸縮的view;
在狀態欄中一般有兩類(使用FLAG_標記):
(1)正在進行的程序;
(2)是通知事件;
快速創建一個Notification的步驟簡單可以分爲以下四步:
第一步:通過getSystemService()方法得到NotificationManager對象;
- nManager = (NotificationManager) this.getSystemService(service);
第二步:對Notification的一些屬性進行設置比如:內容,圖標,標題,相應notification的動作進行處理等等;
- notification.icon = R.drawable.ic_launcher;// 設置通知的圖標
- notification.tickerText = tickerText; // 顯示在狀態欄中的文字
- notification.when = when; // 設置來通知時的時間
- notification.sound = Uri.parse("android.resource://com.sun.alex/raw/dida"); // 自定義聲音
- notification.flags = Notification.FLAG_NO_CLEAR; // 點擊清除按鈕時就會清除消息通知,但是點擊通知欄的通知時不會消失
- notification.flags = Notification.FLAG_ONGOING_EVENT; // 點擊清除按鈕不會清除消息通知,可以用來表示在正在運行
- notification.flags |= Notification.FLAG_AUTO_CANCEL; // 點擊清除按鈕或點擊通知後會自動消失
- notification.flags |= Notification.FLAG_INSISTENT; // 一直進行,比如音樂一直播放,知道用戶響應
- notification.defaults = Notification.DEFAULT_SOUND; // 調用系統自帶聲音
- notification.defaults = Notification.DEFAULT_VIBRATE;// 設置默認震動
- notification.defaults = Notification.DEFAULT_ALL; // 設置鈴聲震動
- notification.defaults = Notification.DEFAULT_ALL; // 把所有的屬性設置成默認
第三步:通過NotificationManager對象的notify()方法來執行一個notification的消息;
- nManager.notify(ID, notification);
第四步:通過NotificationManager對象的cancel()方法來取消一個notificatioin的消息;
Java代碼- 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
- package com.sun.alex;
- import android.app.Activity;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class NotificationActivity extends Activity {
- private Button sendBtn, cancelBtn;
- private Notification notification;
- private NotificationManager nManager;
- private Intent intent;
- private PendingIntent pIntent;
- // Notification的標示ID
- private static final int ID = 1;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- sendBtn = (Button) this.findViewById(R.id.send);
- cancelBtn = (Button) this.findViewById(R.id.cancel);
- String service = NOTIFICATION_SERVICE;
- nManager = (NotificationManager) this.getSystemService(service);
- notification = new Notification();
- String tickerText = "測試Notifaction"; // 通知提示
- // 顯示時間
- long when = System.currentTimeMillis();
- notification.icon = R.drawable.ic_launcher;// 設置通知的圖標
- notification.tickerText = tickerText; // 顯示在狀態欄中的文字
- notification.when = when; // 設置來通知時的時間
- notification.sound = Uri.parse("android.resource://com.sun.alex/raw/dida"); // 自定義聲音
- notification.flags = Notification.FLAG_NO_CLEAR; // 點擊清除按鈕時就會清除消息通知,但是點擊通知欄的通知時不會消失
- notification.flags = Notification.FLAG_ONGOING_EVENT; // 點擊清除按鈕不會清除消息通知,可以用來表示在正在運行
- notification.flags |= Notification.FLAG_AUTO_CANCEL; // 點擊清除按鈕或點擊通知後會自動消失
- notification.flags |= Notification.FLAG_INSISTENT; // 一直進行,比如音樂一直播放,知道用戶響應
- notification.defaults = Notification.DEFAULT_SOUND; // 調用系統自帶聲音
- notification.defaults = Notification.DEFAULT_SOUND;// 設置默認鈴聲
- notification.defaults = Notification.DEFAULT_VIBRATE;// 設置默認震動
- notification.defaults = Notification.DEFAULT_ALL; // 設置鈴聲震動
- notification.defaults = Notification.DEFAULT_ALL; // 把所有的屬性設置成默認
- sendBtn.setOnClickListener(sendClickListener);
- cancelBtn.setOnClickListener(cancelClickListener);
- }
- private OnClickListener sendClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- // 單擊通知後會跳轉到NotificationResult類
- intent = new Intent(NotificationActivity.this,
- NotificationResult.class);
- // 獲取PendingIntent,點擊時發送該Intent
- pIntent = PendingIntent.getActivity(NotificationActivity.this, 0,
- intent, 0);
- // 設置通知的標題和內容
- notification.setLatestEventInfo(NotificationActivity.this, "標題",
- "內容", pIntent);
- // 發出通知
- nManager.notify(ID, notification);
- }
- };
- private OnClickListener cancelClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- // 取消通知
- nManager.cancel(ID);
- }
- };
- }
- nManager.cancel(ID);
- nManager.notify(ID, notification);
- nManager = (NotificationManager) this.getSystemService(service);
Andriod-NotificationManager
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.