站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
程式Android 安卓

【APP/Android】如何使用 NotificationManager 顯示通知訊息在手機狀態列

tags: APP Android

Notification 簡介

  • 使用手機時,在左上方狀態列跳出一個通知,讓使用者可以往下滑並點選,這樣的功能就是 Notification 通知訊息
  • Notification 會用到的類別:
    • NotificationManager:負責整個 Android 系統的通知控管機制,且 extends Object
    • Notification:用來儲存相關設定屬性,e.g. 閃燈、震動…,當作真正通知訊息主體之類別
    • Notification.Builder:在 API level 11 (Android 3.0) 以後,Notification.Builder 被指定用來建構 Notification
  • 補充:
    • Android 3.0 以上選擇 Notification
    • Android 3.0 以下選擇 NotificationCompat

Code 程式碼

步驟1:new 一個 method,並記得在 onCreate() 呼叫此方法

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);
    Notify();
}

// new 一個 method
public void Notify() {

}

步驟2:撰寫 Notify(),初始化 NotificationManager

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

步驟3:使用 Notification.Builder 設定相關屬性

  • 必要屬性:

  • 選用屬性:

    • setLargeIcon(Bitmap b) :大圖示,需要Bitmap物件,建議的大小是 64×64
    • setWhen(long when):設定發送通知時間
    • setTicker():設置狀態列的顯示的資訊
    • setAutoCancel(boolean autoCancel):設置通知被使用者點擊後是否清除
    • setDefaults():設定聲音、震動、閃屏…等
    • setVibrate(long[] pattern):設定震動模式,由停止時間、震動時間組成的 Pattern
    • setSound(Uri sound):設定指定的鈴聲
    • setLights(int argb, int onMs, int offMs):設定燈光閃爍的顏色、on, off時間
  • Code 程式碼:

Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher)
        .setTicker("xx特價")
        .setContentTitle("標題example")
        .setContentText("內容example");

步驟4:將步驟3設定好的屬性給 Notification

  • notificationManager 常用方法:
    • cancel(int id):清除參數指定 id 的通知
    • notify(int id, Notification notification)
      • 使用參數指定的 id 發出通知
      • 如果這個 id 的通知已經存在,就使用通知物件更新原來通知的內容。
Notification notification = builder.build();  
notificationManager.cancel(0); // 移除id值為0的通知  
notificationManager.notify(0, notification);

補充1:SmallIcon設定的畫面都是顯示一個 全色的方塊

補充2:若使用 “手機震動提示” 特效,必須先進行以下設定

  1. 打開 AndroidManifest.xml
  2. 加入 <uses-permission android:name="android.permission.VIBRATE"/>
  3. 範例:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <uses-permission android:name="android.permission.VIBRATE"/>
    <application ... >
        ...
    </application>
</manifest>

Reference 參考資料

  1. NotificationManager 動態圖片:http://www.zendei.com/article/21491.html
  2. 《Android》『NotificationManager』- 顯示通知訊息(Notifications)的基本用法:https://xnfood.com.tw/android-notificationmanager/
  3. NotificationCompat 與 Notification 差別:https://yaoandy107.github.io/notificationcompat-vs-notification/
  4. Android Tutorial 第五堂(2)系統通知服務 - Notification:http://www.codedata.com.tw/mobile/android-tutorial-the-5th-class-2-notification/
  5. Notification.Builder 官方文件:https://developer.android.com/reference/android/app/Notification.Builder.html
  6. NotificationManager 官方文件:https://developer.android.com/reference/android/app/NotificationManager.html
  7. Kotlin 開發第 15 天 Notification( NotificationManager):https://android.devdon.com/archives/281

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽