FC 8.2 關於通知Notification
阿新 • • 發佈:2018-11-24
通知,既可以在活動裡建立,也可以在廣播接收器裡建立,也可以在服務裡建立。(一般只有在程式進入到後臺的時候我們才需要使用通知,所以在活動裡建立通知的場景比較少)
建立通知:
- 需要一個NotificationManager對通知進行管理,呼叫getSystemService()獲取,這個方法接收一個字串引數用於確定獲取系統的那個服務。
- 接下來使用一個Builder構造器來建立Notification物件。(因為Android系統每個版本都會對通知部分功能進行修改,郭神的建議是使用support-v4庫)
- 設定title、text、通知時間、小圖示
- 使用NotificationManager的notify()
- 第一個引數是id,用於保證每個通知所指定的id都是不同的。
- 第二個引數就是物件Notification
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new NotificationCompat.Builder(this) .setContentTitle("我是通知title") .setContentText("我是通知text") .setWhen(System.currentTimeMillis()) .setSmallIcon(R.mipmap.ic_launcher) .build(); manager.notify(1, notification);
在介面新增一個按鈕,為按鈕新增事件,即我們剛寫好的通知事件。
執行,點選按鈕,手機上會出現一個通知,然而點選通知並沒有什麼動作,通知也沒有消失,因為我們沒有設定,接下來修改程式碼來實現:
- 點選通知跳轉頁面
- 點選通知後通知訊息自動消失
- 通知來時,led燈閃爍
- 手機通知的預設效果
- 設定通知的級別
點選通知跳轉頁面
這裡需要使用PendingIntent,使用它的getActivity方法,其中需要的引數,第一個是context,(第二個一般用不到,傳0即可)第三個是Intent物件,使用這個物件構建出pendingIntent的意圖,第四個引數用於確定pengdingIntent的行為,這裡傳入0。
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
...
.setContentIntent(pi)//設定點選通知的動作
點選通知後通知訊息自動消失
兩種方法:
方法一:在活動的oncreate方法裡新增程式碼:
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(1);//1是對應通知的id
方法二,直接在Notification物件裡新增程式碼:
.setAutoCancel(true)//設定點選後通知訊息消失
通知的效果及其通知級別設定:
.setLights(Color.GREEN,1000,1000)//設定通知來是手機led等閃爍
.setDefaults(NotificationCompat.DEFAULT_ALL)//設定通知的預設效果,
.setPriority(Notification.PRIORITY_MAX)
完整程式碼:
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("我是通知title")
.setContentText("我是通知text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(pi)//設定點選通知的動作
.setAutoCancel(true)//設定點選後通知訊息消失
.setLights(Color.GREEN,1000,1000)//設定通知來是手機led等閃爍
.setDefaults(NotificationCompat.DEFAULT_ALL)//設定通知的預設效果,
.setPriority(Notification.PRIORITY_MAX)
.build();
manager.notify(1, notification);