Notification 可以理解為通知的意思,會出現在通知欄,比如來了一條短信
使用 Notification 有以下3個步驟:
1. 創建 NotificationManager的對象
2.為Notification設置屬性
3.使用 NotificationManager 提供的 notify 發送通知
實例:發出一個通知
復制代碼
1 /**
2 * 創建notify
3 */
4 private void createNotify() {
5 // 創建NotificationManager 對象
6 NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
7 // 創建notifyCation對象
8 Notification notify = new Notification();
9 notify.icon = R.drawable.icon_reply;//設置圖標
10 notify.when = System.currentTimeMillis();//發通知的時間,立即
11 notify.tickerText = "hi,我來了";//提示文字
12 notify.flags = Notification.FLAG_AUTO_CANCEL;//用戶點擊後 自動取消
13 Intent intent = new Intent(this, NextActivity.class);
14 PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
15 PendingIntent.FLAG_UPDATE_CURRENT);
16 notify.setLatestEventInfo(this, "來消息啦", "一條通知", pIntent);
17 manager.notify(10, notify);//發出通知,10是 通知的id
18 }
復制代碼
這個方法 大家可以設置是 按鈕的事件裡 調用,運行程序後,點擊按鈕 就可以看到通知發送出來了。 布局文件 和相關的代碼 這裡就不在編寫。
PendingIntent 為Intent的包裝,這裡是啟動Intent的描述,PendingIntent.getActivity 返回的PendingIntent表示
此PendingIntent實例中的Intent是用於啟動 Activity 的Intent。
PendingIntent.getActivity的參數依次為:Context,發送者的請求碼(可以填0),用於系統發送的Intent,標志位。
其中 PendingIntent.FLAG_UPDATE_CURRENT 表示如果該描述的PendingIntent已存在,則改變已存在的PendingIntent的Extra數據為新的PendingIntent的Extra數據。
Intent 與 PendingIntent 的區別:
Intent :意圖,即告訴系統我要干什麼,然後系統根據這個Intent做對應的事。如startActivity相當於發送消息,而Intent是消息的內容。
PendingIntent :包裝Intent,Intent 是我們直接使用 startActivity , startService 或 sendBroadcast 啟動某項工作的意圖。
而某些時候,我們並不能直接調用startActivity , startServide 或 sendBroadcast ,而是當程序或系統達到某一條件才發送Intent。
如這裡的Notification,當用戶點擊Notification之後,由系統發出一條Activity 的 Intent 。因此如果我們不用某種方法來告訴系統的話,系統是不知道是使用 startActivity ,
startService 還是 sendBroadcast 來啟動Intent 的(當然還有其他的“描述”),因此這裡便需要PendingIntent。