天天看點

Notification使用以及PendingIntent.getActivity() (轉)

個人水準有限,接觸到的暫時是這麼多,是以當我系統了解完了之後會對此做一個補充

Notification 的使用需要以上四個步驟。

簡單的說PendingIntent.getActivity()就是即将發生的intent.

PendingIntent.getActivity(ctx,o,intent,o)官方文檔是這樣解釋的:

context

The Context in which this PendingIntent should start the activity.

requestCode

Private request code for the sender (currently not used).  現在不使用了

intent

Intent of the activity to be launched.

flags

一下摘自一個人的部落格,隻是比官方文檔好了解點:

下面來談談notification,這個notification一般用在電話,短信,郵件,鬧鐘鈴聲,在手機的狀态欄上就會出現一個小圖示,提示使用者處理這個快訊,這時手從上方滑動狀态欄就可以展開并處理這個快訊。發現這個功能特别好用,是以我就根據我的了解來談談。摘自幫助文檔 : notification類表示一個持久的通知,将送出給使用者使用NotificationManager。已添加的Notification.Builder,使其更容易建構通知。notification是一種讓你的應用程式在沒有開啟情況下或在背景運作警示使用者。它是看不見的程式元件(Broadcast Receiver,Service和不活躍的Activity)警示使用者有需要注意的事件發生的最好途徑。

先來區分以下狀态欄和狀态條的差別:

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

在狀态條有好多資訊量:比如usb連接配接圖示,手機信号圖示,電池電量圖示,時間圖示等等;

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

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

(1)正在進行的程式;

(2)是通知事件;

大概來描述建立一個Notification傳送的資訊有:

1、一個狀态條圖示;

2、在拉伸的狀态欄視窗中顯示帶有大标題,小标題,圖示的資訊,并且有處理該點選事件:比如調用該程式的入口類;

3、閃光,LED,或者震動;

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

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

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

第三步:通過NotificationManager對象的notify()方法來執行一個notification的快訊;

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

下面對Notification類中的一些常量,字段,方法簡單介紹一下:

常量:

DEFAULT_ALL 使用所有預設值,比如聲音,震動,閃屏等等

DEFAULT_LIGHTS 使用預設閃光提示

DEFAULT_SOUNDS 使用預設提示聲音

DEFAULT_VIBRATE 使用預設手機震動

【說明】:加入手機震動,一定要在manifest.xml中加入權限:

<uses-permission android:name="android.permission.VIBRATE" />

以上的效果常量可以疊加,即通過

mNotifaction.defaults =DEFAULT_SOUND | DEFAULT_VIBRATE ;

或mNotifaction.defaults |=DEFAULT_SOUND (最好在真機上測試,震動效果模拟器上沒有)

//設定flag位

FLAG_AUTO_CANCEL 該通知能被狀态欄的清除按鈕給清除掉

FLAG_NO_CLEAR 該通知能被狀态欄的清除按鈕給清除掉

FLAG_ONGOING_EVENT 通知放置在正在運作

FLAG_INSISTENT 是否一直進行,比如音樂一直播放,知道使用者響應

常用字段:

contentIntent 設定PendingIntent對象,點選時發送該Intent

defaults 添加預設效果

flags 設定flag位,例如FLAG_NO_CLEAR等

icon 設定圖示

sound 設定聲音

tickerText 顯示在狀态欄中的文字

when 發送此通知的時間戳

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 voidnotify(String tag ,int id, Notification notification) 将通知加入狀态欄, 标簽為tag,标記為id

public void notify(int id, Notification notification) 将通知加入狀态欄,,标記為id

http://www.cnblogs.com/babynight/archive/2012/08/22/Notification_NotificationManage_PendingIntent.html

繼續閱讀