Android O 新特性 — Notification
生活随笔
收集整理的這篇文章主要介紹了
Android O 新特性 — Notification
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
新特性
在 Android 8.0 中,我們已重新設計通知,以便為管理通知行為和設置提供更輕松和更統一的方式。這些變更包括:
- 通知渠道:Android 8.0 引入了通知渠道,其允許您為要顯示的每種通知類型創建用戶可自定義的渠道。用戶界面將通知渠道稱之為通知類別。要了解如何實現通知渠道的信息,請參閱通知渠道指南。
- 通知標志:Android 8.0 引入了對在應用啟動器圖標上顯示通知標志的支持。通知標志可反映某個應用是否存在與其關聯、并且用戶尚未予以清除也未對其采取行動的通知。通知標志也稱為通知點。要了解如何調整通知標志,請參閱通知標志指南。
- 休眠:用戶可以將通知置于休眠狀態,以便稍后重新顯示它。重新顯示時通知的重要程度與首次顯示時相同。應用可以移除或更新已休眠的通知,但更新休眠的通知并不會使其重新顯示。
- 通知超時:現在,使用 setTimeoutAfter() 創建通知時您可以設置超時。您可以使用此函數指定一個持續時間,超過該持續時間后,通知應取消。如果需要,您可以在指定的超時持續時間之前取消通知。
- 通知設置:當您使用 Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCESIntent 從通知創建指向應用通知設置的鏈接時,您可以調用 setSettingsText() 來設置要顯示的文本。此系統可以提供以下 Extra 數據和 Intent,用于過濾應用必須向用戶顯示的設置:EXTRA_CHANNEL_ID、NOTIFICATION_TAG 和 NOTIFICATION_ID。
- 通知清除:系統現在可區分通知是由用戶清除,還是由應用移除。要查看清除通知的方式,您應實現 NotificationListenerService 類的新 onNotificationRemoved() 函數。
- 背景顏色:您現在可以設置和啟用通知的背景顏色。只能在用戶必須一眼就能看到的持續任務的通知中使用此功能。例如,您可以為與駕車路線或正在進行的通話有關的通知設置背景顏色。您還可以使用 Notification.Builder.setColor() 設置所需的背景顏色。這樣做將允許您使用 Notification.Builder.setColorized() 啟用通知的背景顏色設置。
- 消息樣式:現在,使用 MessagingStyle 類的通知可在其折疊形式中顯示更多內容。對于與消息有關的通知,您應使用 MessagingStyle 類。您還可以使用新的 addHistoricMessage() 函數,通過向與消息相關的通知添加歷史消息為會話提供上下文。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
創建通知
您可以在 NotificationCompat.Builder 對象中為通知指定 UI 信息和操作。要創建通知,請調用 NotificationCompat.Builder.build(),它將返回包含您的具體規范的 Notification 對象。要發出通知,請通過調用 NotificationManager.notify() 將 Notification 對象傳遞給系統。
必需的通知內容
Notification 對象必須包含以下內容:
- 小圖標,由 setSmallIcon() 設置
- 標題,由 setContentTitle() 設置
- 詳細文本,由 setContentText() 設置
創建通知/自定義通知渠道
(1)NotificationManager獲取
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);復制代碼(2)通知渠道的創建
// Creates an explicit intent for an Activity in your app Intent intent = new Intent(MainActivity.this, Main2Activity.class);TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(MainActivity.this); taskStackBuilder.addParentStack(Main2Activity.class); taskStackBuilder.addNextIntent(intent);// 通過taskStackBuilder對象獲取PendingIntent PendingIntent pi = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);String custom_id = "marco_notification"; // 自定義通知渠道 idCharSequence name = getString(R.string.channel_name); // 自定義通知渠道 nameString description = getString(R.string.channel_description); // 自定義通知渠道描述 int importance = NotificationManager.IMPORTANCE_HIGH; // 自定義通知渠道級別//創建自定義渠道 NotificationChannel marco_channel = new NotificationChannel(custom_id, name, importance);// 添加一系列特性 marco_channel.setDescription(description); marco_channel.enableLights(true); marco_channel.setLightColor(Color.RED);notificationManager.createNotificationChannel(marco_channel);復制代碼(3)通知的創建、顯示
NotificationCompat.Builder notification = new NotificationCompat.Builder(MainActivity.this, custom_id) .setContentTitle("This is a Notification") .setContentText("Notification contentText") .setSmallIcon(R.drawable.ic_launcher_background) .setContentIntent(pi); notificationManager.notify(1,notification.build());復制代碼以下為代碼截圖和通知顯示效果:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1. 創建自定義渠道的Notification代碼邏輯
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2. Notification顯示截圖
通知超時
NotificationCompat.Builder notification = new NotificationCompat.Builder(MainActivity.this, custom_id).setContentTitle("This is a Notification").setContentText("Notification contentText").setSmallIcon(R.drawable.ic_launcher_background).setContentIntent(pi)// 設置超時時間,5000 = 5秒,Notification將會消失 .setTimeoutAfter(5000);復制代碼總結
以上是生活随笔為你收集整理的Android O 新特性 — Notification的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux基础知识复习
- 下一篇: URAL 1635 Mnemonics