iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
0
Mobile Development

Android Studio 學習交流系列 第 20

[Day20]Android學習-類別介紹-Notification

  • 分享至 

  • xImage
  •  

這篇要為大家分享我學習到的Notification類別,Notification常在我們沒有開啟app時,向我們傳送一個小訊息,提供我們知道目前有甚麼活動或事件發生,個人目前經常所見的通知情況有手遊出新活動、通訊軟體訊息(簡訊、未接來電、LINE通知訊息)或者鬧鐘提醒等,對於使用者客製化的提醒在生活中有很大的幫助,因此,Notification在日常生活真是不可或缺的功能。

Notification

官方文件Notifications指出

通知泛指 Android 在您應用程式 UI 以外的位置所顯示的訊息,可為使用者提供提醒內容、其他使用者傳來的通訊內容,或是來自您應用程式的即時資訊。使用者只要輕觸通知即可開啟應用程式,也可以直接透過通知執行相關動作。

Notification顯示方式

Notification顯示方式分為兩種:

1.狀態列和通知導覽匣
https://ithelp.ithome.com.tw/upload/images/20191001/20121149jN0l0aENLq.jpg
圖(一) 狀態列顯示訊息,圖片來源參見
https://ithelp.ithome.com.tw/upload/images/20191001/20121149Mi52L7245X.jpg
圖(二) 向下滑動狀態列查看導覽匣,圖片來源參見

2.抬頭通知

https://ithelp.ithome.com.tw/upload/images/20191001/20121149ZL1h3ln8Zz.jpg
圖(三) 短暫懸浮在視窗上方,圖片來源參見

Notification方法

  1. 時間戳記:setWhen()方法提供在訊息欄上顯示系統時間。
  2. 小型圖示:setSmallIcon()方法提供呈現小標誌。
  3. 大型圖示:setLargeIcon()方法提供呈現較小標誌較大的圖示。
  4. 標題:setContentTitle()方法提供輸入標題文字。
  5. 訊息內容: setContentText()方法提供輸入訊息內容。

實作Notification

完整程式碼

public class MainActivity extends AppCompatActivity {

    private Notification notification;
    private NotificationManager manager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //        取得通知服務
        manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    }

    private Notification notification_method(String title,String text) {
        Log.d("Debug","notification");

        //        建構notification物件,1.設定標題、2.設定訊息、3.設定時間、4.設定小圖示
        
        return notification = new Notification.Builder(this)
                .setContentTitle(title)
                .setContentText(text)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.drawable.banana)
                .build();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //        執行通知
        manager.notify(0,notification_method("訊息","訊息來了"));
        Log.d("Debug","onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        //        執行通知
        manager.notify(1,notification_method("訊息","訊息結束"));
        Log.d("Debug","onPause");
    }
}

(P.S 相關程式解釋在註解)

  • Builder適用於API版本16以上
    https://ithelp.ithome.com.tw/upload/images/20191002/20121149d9PiJhLjVF.jpg
    https://ithelp.ithome.com.tw/upload/images/20191002/201211499pYgVptjlV.jpg
    (P.S 模擬器出現沒辦法出現Notification訊息的狀況,所以我用實機來做測試)

YA~學習完通知服務,以後可以運用相同的方式建立自己的通知訊息囉!

Thank you for your time!


上一篇
[Day19]Android學習-類別介紹-BroadcastReceiver
下一篇
[Day21]Android學習-元件介紹-Service
系列文
Android Studio 學習交流30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言