android o preview 3,Android O Preview 之 通知渠道(Notification Channels)
介紹
Android O 引入了 通知渠道(Notification Channels),以提供統(tǒng)一的系統(tǒng)來幫助用戶管理通知,如果是針對 android O 為目標(biāo)平臺時,必須實現(xiàn)一個或者多個通知渠道,以向用戶顯示通知。若并不以 Android O 為目標(biāo)平臺,當(dāng)應(yīng)用運行在 android O 設(shè)備上時,其行為將與運行在 Android 7.0 上時相同。
開發(fā)者可以為需要發(fā)送的每個不同的通知類型創(chuàng)建一個通知渠道。還可以創(chuàng)建通知渠道來反映應(yīng)用的用戶做出的選擇。例如,可以為聊天應(yīng)用的用戶創(chuàng)建的每個聊天組建立單獨的通知渠道。
Android O 的用戶可以使用一致的系統(tǒng) UI 管理大多數(shù)與通知有關(guān)的設(shè)置。所有發(fā)布至通知渠道的通知都具有相同的行為。當(dāng)用戶修改任何下列特性的行為時,修改將作用于通知渠道:
重要性
聲音
光
振動
在鎖屏上顯示
替換免打擾模式
以下為模擬器上效果圖
device-notification.png
device-notification_settings.png
device-notification_channel.png
用戶可以訪問 Settings(右劃一段距離通知可以看到Settings),或長按通知來更改這些行為,甚至可以隨時屏蔽通知渠道。一旦在創(chuàng)建完某個通知渠道并將其提交到通知管理器后,便無法通過編程方式修改通知渠道的行為,這些設(shè)置由用戶掌控。
通知優(yōu)先級和重要性
Android O 棄用了為單個通知設(shè)置優(yōu)先級的功能。創(chuàng)建通知渠道時可以設(shè)置建議重要性級別。為通知渠道指定的重要性級別適用于發(fā)布至該渠道的所有通知消息。可以配置五個級別中的一個,這些級別代表著通知渠道可以打斷用戶的程度,范圍是 IMPORTANCE_NONE(0)至 IMPORTANCE_HIGH(4)。默認重要性級別為 3:在所有位置顯示,發(fā)出提示音,但不會對用戶產(chǎn)生視覺干擾。創(chuàng)建通知渠道后,只有系統(tǒng)可以修改其重要性。用戶可以在設(shè)置中找到。
device-notification-_all_channels.png
device-notification_channel_detail.png
device-notification_channel_importance.png
創(chuàng)建通知渠道
要創(chuàng)建通知渠道,請執(zhí)行下列操作:
構(gòu)建一個在軟件包內(nèi)具有唯一 ID 的通知渠道對象。
為該通知渠道對象配置所需的任何初始設(shè)置(例如提示音以及對用戶可見的可選說明)。
將通知渠道對象提交到通知管理器。
如果試圖使用初始值創(chuàng)建的通知渠道已存在,不會執(zhí)行任何操作,因此啟動應(yīng)用時可以放心地執(zhí)行以上步驟序列。以下示例代碼演示的是如何創(chuàng)建具有低重要性級別和自定義振動模式的通知渠道。
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 通知渠道的id
String id = "my_channel_01";
// 用戶可以看到的通知渠道的名字.
CharSequence name = getString(R.string.channel_name);
// 用戶可以看到的通知渠道的描述
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
// 配置通知渠道的屬性
mChannel.setDescription(description);
// 設(shè)置通知出現(xiàn)時的閃燈(如果 android 設(shè)備支持的話)
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
// 設(shè)置通知出現(xiàn)時的震動(如果 android 設(shè)備支持的話)
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
//最后在notificationmanager中創(chuàng)建該通知渠道
//
mNotificationManager.createNotificationChannel(mChannel);
創(chuàng)建通知渠道組
如果應(yīng)用支持多個帳戶,則可為每個帳戶創(chuàng)建一個通知渠道組。通知渠道組用于對一款應(yīng)用內(nèi)的多個同名通知渠道進行管理。例如,一款社交網(wǎng)絡(luò)應(yīng)用可能提供面向個人帳戶以及企業(yè)帳戶的支持。在此情境下,每個帳戶可能都需要多個功能和名稱相同的通知渠道。
一個包括 2 個通知渠道的個人帳戶:
帖子新增評論的通知。
聯(lián)系人推薦帖子的通知。
一個包括 2 個通知渠道的企業(yè)帳戶:
帖子新增評論的通知。
聯(lián)系人推薦帖子的通知。
在本例中,將與每個用戶帳戶相關(guān)的通知渠道組織成專用組可確保用戶能在 Settings 中輕松地進行區(qū)分。每個通知渠道組都必須在軟件包內(nèi)具有唯一 ID,并具有用戶可見的名稱。下面這段代碼演示了如何創(chuàng)建通知渠道組。
// 通知渠道組的id.
String group = "my_group_01";
// 用戶可見的通知渠道組名稱.
CharSequence name = getString(R.string.group_name);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.createNotificationChannelGroup(new NotificationChannelGroup(group, name));
新建渠道組后,便可調(diào)用 setGroup()將某個新渠道關(guān)聯(lián)到該組。注意,只能在將渠道提交給通知管理器之前修改通知渠道與組之間的關(guān)聯(lián)。
創(chuàng)建通知
如果 應(yīng)用是以 Android O 為目標(biāo)平臺并且在不指定有效通知渠道的情況下發(fā)布通知,那么通知將無法發(fā)布,系統(tǒng)會記錄錯誤。
注:可以在 Android O 中啟用一個新設(shè)置,當(dāng)針對 Android O 的應(yīng)用試圖在沒有通知渠道的情況下發(fā)布時,以 toast 形式顯示屏幕警告。要為運行 Android O 的開發(fā)設(shè)備啟用該設(shè)置,請轉(zhuǎn)到 Settings > Developer options,然后打開 Show notification channel warnings。
向渠道發(fā)布通知
下面這段代碼說明如何向通知渠道發(fā)布簡單通知。請注意,代碼利用渠道的 ID 將通知與通知渠道關(guān)聯(lián)起來。
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 為該通知設(shè)置一個id
int notifyID = 1;
// 通知渠道的id
String CHANNEL_ID = "my_channel_01";
// Create a notification and set the notification channel.
Notification notification = new Notification.Builder(MainActivity.this)
.setContentTitle("New Message")
.setContentText("You've received new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
.setChannelId(CHANNEL_ID)
.build();
// 發(fā)布通知
mNotificationManager.notify(id, notification);
讀取通知渠道設(shè)置
用戶可以修改通知渠道的設(shè)置,包括振動和提示音等行為。開發(fā)者可以調(diào)用以下兩個方法來發(fā)現(xiàn)用戶對通知渠道應(yīng)用的設(shè)置:
更新通知渠道設(shè)置
一旦創(chuàng)建了通知渠道,其設(shè)置和行為就由用戶掌控。可以再次調(diào)用 createNotificationChannel()以重命名現(xiàn)有通知渠道,或更新其說明。以下示例代碼說明如何通過創(chuàng)建啟動 Activity 的 Intent 將用戶重定向到通知渠道的設(shè)置。在本例中,Intent 要求提供擴展數(shù)據(jù),包括通知渠道的 ID 和應(yīng)用的軟件包名稱。
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_CHANNEL_ID,mChannel.getId());
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());startActivity(intent);
刪除通知渠道
可以通過調(diào)用 deleteNotificationChannel()
來刪除通知渠道。作為一個垃圾信息預(yù)防機制,通知設(shè)置中將顯示已刪除渠道的數(shù)量。可以通過以下任一方法清除開發(fā)設(shè)備上的測試渠道:重新安裝應(yīng)用;清除與應(yīng)用副本關(guān)聯(lián)的數(shù)據(jù)。以下示例代碼演示了如何刪除通知渠道。
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 通知渠道的id
String id = "my_channel_01";
NotificationChannel mChannel = mNotificationManager.getNotificationChannel(id);
mNotificationManager.deleteNotificationChannel(mChannel);
總結(jié)
以上是生活随笔為你收集整理的android o preview 3,Android O Preview 之 通知渠道(Notification Channels)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux sublime nodejs
- 下一篇: android sha1是签名么,And