通知的各種實用寫法技巧
阿新 • • 發佈:2018-12-21
Notification的實用技巧
這裡講下兩種寫法:廢話少說,直接上程式碼。
第一種:
// 第一種彈出通知的方法 @SuppressWarnings("deprecation") private void setpopnotification1() { // 首先拿到一個通知的管理者 NotificationManager manager1 = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // 設定沒有下拉時顯示的圖示和標題 int icon1 = R.drawable.ic_launcher; CharSequence tickerText = "您有新的預約"; // 顯示的時間 int when = (int) System.currentTimeMillis(); // 過時的寫法 Notification notification = new Notification(icon1, tickerText, when); // 定義下拉通知欄時要展現的內容資訊 CharSequence contentTitle = "您的預約提醒"; CharSequence contentText = "通知的內容在這裡顯示了哦"; Intent notificationIntent = new Intent(this, MainActivity.class); // 配合SingleTask // notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK // | Intent.FLAG_ACTIVITY_CLEAR_TASK); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); notification.setLatestEventInfo(this, contentTitle, contentText, contentIntent); notification.flags = Notification.FLAG_AUTO_CANCEL;// 設定自動消失 manager1.notify(1, notification); }
第二種:
// 第二種彈出通知的方法 private void setpopnotification2() { NotificationManager manager2 = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); NotificationCompat.Builder builder = new NotificationCompat.Builder( this); int icon = R.drawable.ic_launcher; // 設定沒有下拉時顯示的圖示和標題 builder.setSmallIcon(icon); builder.setTicker("您有新的預約"); // 設定點選後自動消失 builder.setAutoCancel(true); // 設定下拉後顯示的圖示 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)); // 下拉後顯示內容標題 builder.setContentTitle("您的預約提醒"); // 顯示的內容 builder.setContentText("通知的內容在這裡顯示了哦"); // 顯示時間 builder.setWhen(System.currentTimeMillis()); // 設定通知的優先順序--Max代表不管手機目前有多少其他通知都能顯示在最上面 builder.setPriority(Notification.PRIORITY_MAX); // 設定通知的鈴聲。震動。燈光 // DEFAULT_ALL---預設系統全部 // DEFAULT_SOUND--鈴聲 // DEFAULT_VIBRATE--震動 // ... builder.setDefaults(Notification.DEFAULT_ALL); // 點選能跳轉部分 Intent intent = new Intent(this, MainActivity.class); // 設定flag---FLAG_ACTIVITY_NEW_TASK保證每次都是最新的(專案中很實用) // 當點選要跳轉時需要在清單檔案中對activity進行啟動模式設定--一般都是singleTask intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); // 給每個通知設定唯一的requestCode,保證每次的通知不重複, // 不然點選時就會覆蓋之前的,點選之前彈出的通知就沒有用 /** * Flags為PendingIntent.FLAG_CANCEL_CURRENT,則只有最後一次PendingIntent有效, * 之前的都無效了。 PendingIntent.FLAG_UPDATE_CURRENT,則每次都是最新的。。具體的使用要看專案需求了 */ int requestCode = (int) SystemClock.uptimeMillis(); PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT); builder.setContentIntent(pendingIntent); // 設定顯示 manager2.notify(1, builder.build()); }
上述兩種都可以使用顯示通知出來,建議使用第二種,畢竟第一種已經過時了。瞭解了基本用法結合專案需求來做會更好。
附上Demo地址:http://download.csdn.net/detail/ae_fring/9677156