《Android》『NotificationManager』- 顯示通知訊息(Notifications)的基本用法

《Android Developers 參考文獻》

➥NotificationManager

 

《繼承架構》

extends Object


java.lang.Object

android.app.NotificationManager

 

《簡單介紹》

有時候當我們在使用手機時,常常在上面的狀態列中,突然跳出一個通知,讓使用者可以將狀態列拉出來點選,這樣的功能即稱作通知訊息(Notifications),它允許在使用不同的 APP 時觸發,也就是說,就算發出該通知的 APP 目前並不是正在使用,使用者還是可以透過通知訊息,取得該 APP 想要告知我的資訊,再進一步透過點選該通知,執行該 APP 希望我們做的動作。

 

《NotificationManager、Notification 與 Notification.Builder》

在探討如何使用顯示通知訊息功能前,我們必須先搞清楚所會用到的一些元件,分別是負責整個系統通知控管機制的 NotificationManager;用來儲存相關設定屬性、當作真正通知訊息主體的 Notification;以及在 Android 6.0 以後,被指定用來建構 Notification 的 Notification.Builder。

條列整理如下 –

NotificationManager :

負責整個 Android 系統的通知控管機制。

Notification :

用來儲存相關設定屬性(如是否閃燈、震動…),當作真正通知訊息主體之類別。

Notification.Builder :

API level 11 以後,Notification.Builder 被指定用來建構 Notification,捨棄了直接宣告 notification 再透過 setLatestEventInfo 方法的方式。

《基本用法》

以前在實作顯示通知訊息這個功能的時候,通常的作法是先初始化 NotificationManager 並取得 Notification 服務後,用 Notification notification = new Notification(); 的方式,宣告一個 notification 物件,再直接透過此物件設定 notification 的各個屬性,但在 API level 11 之後,notification.setLatestEventInfo() 這個方法已經不被維護(已於 Android 6.0 中移除),我們已無法直接透過 notification 設定我們要的通知訊息標題、內容以及所設定的 contentIntent,在 Android 6.0 中,Google 建議我們透過 Notification.Builder 來建構 notification。

因此,步驟會改為 –

Step1. 初始化 NotificationManager,取得 Notification 服務。

 

Step2. 設定當執行這個通知之後,所要執行的 activity。

 

Step3. 透過 Notification.Builder 來建構 notification (設定相關屬性)。

 

Step4. 將透過 Notification.Builder 設定好的屬性塞回 notification,並開始將顯示通知訊息發送至狀態列上。

在這個步驟要注意的是,builder.getNotification()這個方法在 API level 16 以後,亦不再被維護,Google 建議在透過 Notification.Builder 建構 notification 後,直接使用其 .build() 的方法,省去了建構完畢以後還要再整定的步驟,也就是說,在新的寫法裡,我們會將 Step3Step4 直接合併改為下列寫法 –

Step3 + Step4

 

《程式範例》

綜合以上,現在在顯示通知訊息的用法上,基本步驟應該如下 –

Step1. 初始化 NotificationManager,取得 Notification 服務。

Step2. 設定當執行這個通知之後,所要執行的 activity。

Step3. 透過 Notification.Builder 來建構 notification,並直接使用其 .build() 的方法將設定好屬性的 Builder 轉換成 notification,最後開始將顯示通知訊息發送至狀態列上。

 

以下透過程式碼片段的方式,說明如何顯示通知訊息 –

activity_main.xml

直接宣告一個按鈕,用來測試顯示通知訊息的功能。

MainActivity.java

AndroidManifest.xml

這個程式碼範例中,盡量列出了在 Notification.Builder 中可以設定的屬性,裡面要注意的是,若是要設定通知震動的功能,需在 Androidmanifest.xml 中新增 android.permission.VIBRATE 這個權限。

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *