W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
通知相關(guān)基礎類包含 [NotificationSlot]、[NotificationRequest] 和 [NotificationHelper]。詳細的接口信息請參考通知開發(fā)指導?;A類之間的關(guān)系如下所示:
圖1 通知基礎類關(guān)系圖
NotificationSlot 可以對提示音、振動和重要級別等進行設置。一個應用可以創(chuàng)建一個或多個 NotificationSlot,在發(fā)送通知時,通過綁定不同的 NotificationSlot,實現(xiàn)不同用途。
說明
NotificationSlot 需要先通過 NotificationHelper 的 addNotificationSlot (NotificationSlot)方法發(fā)布后,通知才能綁定使用;所有綁定該 NotificationSlot 的通知在發(fā)布后都具備相應的特性,對象在創(chuàng)建后,將無法更改其設置屬性,對于是否啟動相應設置,用戶有最終控制權(quán)。
不指定 NotificationSlot 時,當前通知會使用默認的 NotificationSlot,默認的 NotificationSlot 優(yōu)先級為 LEVEL_DEFAULT,聲音為系統(tǒng)默認提示音。
NotificationSlot 的級別目前支持如下幾種:
NotificationRequest 用于設置具體的通知對象,包括設置通知的屬性,如:通知的小圖標、自動刪除等參數(shù),以及設置具體的通知類型,如普通文本、長文本等。
通知的常用屬性:
標識說明:為通過 NotificationRequest.setLittleIcon(PixelMap)設置的小圖標。
通知設置 NotificationRequest 的 setIntentAgent(IntentAgent) 后,點擊通知欄上發(fā)布的通知,將觸發(fā)通知中的 IntentAgent 承載的事件。IntentAgent 的設置請參考IntentAgent開發(fā)指導。
標識說明:、
為兩個通過 NotificationRequest.addActionButton(NotificationActionButton)設置的通知附加按鈕,點擊按鈕后可以觸發(fā)相關(guān)的事件,具體事件內(nèi)容如何設置需要參考 NotificationActionButton。
具體的通知類型:目前支持三種類型,包括普通文本 NotificationNormalContent、長文本 NotificationLongTextContent、圖片 NotificationPitctureContent。
標識說明:為通知的標題,通過 NotificationNormalContent.setTitle(String)設置。
為通知的內(nèi)容,通過NotificationNormalContent.setText(String)設置。通知標題和內(nèi)容至少要設置一個。
標識說明:為通知的長文本,通過 NotificationLongTextContent.setLongText(String) 設置,文本長度最大支持1024個字符。
標識說明: 為圖片通知樣式的圖片,通過NotificationPictureContent.setBigPicture(PixelMap bigPicture)設置。
說明
通知發(fā)布后,通知的設置不可修改。如果下次發(fā)布通知使用相同的ID,就會更新之前發(fā)布的通知。
NotificationHelper封裝了發(fā)布、更新、訂閱、刪除通知等靜態(tài)方法。訂閱通知、退訂通知和查詢系統(tǒng)中所有處于活躍狀態(tài)的通知,有權(quán)限要求需為系統(tǒng)應用或具有訂閱者權(quán)限。
通知的開發(fā)指導分為創(chuàng)建NotificationSlot、發(fā)布通知和取消通知等開發(fā)場景。
創(chuàng)建NotificationSlot
NotificationSlot可以設置公共通知的提示聲等,并通過調(diào)用NotificationHelper.addNotificationSlot()發(fā)布NotificationSlot對象。
// 創(chuàng)建notificationSlot對象
NotificationSlot slot = new NotificationSlot("slot_001","slot_default", NotificationSlot.LEVEL_DEFAULT);
slot.setDescription("NotificationSlotDescription");
try {
NotificationHelper.addNotificationSlot(slot);
} catch (RemoteException ex) {
HiLog.warn(LABEL, "addNotificationSlot occur exception.");
}
發(fā)布通知
int notification_id = 1;
NotificationRequest request = new NotificationRequest(notification_id);
request.setSlotId(slot.getId());
String title = "title";
String text = "There is a normal notification content.";
NotificationRequest.NotificationNormalContent content = new NotificationRequest.NotificationNormalContent();
content.setTitle(title)
.setText(text);
NotificationRequest.NotificationContent notificationContent = new NotificationRequest.NotificationContent(content);
// 設置通知的小圖標
request.setLittleIcon(PixelMap);
// 設置通知的內(nèi)容
request.setContent(notificationContent);
// 指定要啟動的ability的ElementName字段
ElementName elementName = new ElementName("", "com.example.testintentagent", "com.example.testintentagent.IntentAgentAbility");
// 將ElementName字段添加到Intent中
Intent intent = new Intent();
intent.setElement(elementName);
List<Intent> intentList = new ArrayList<>();
intentList.add(intent);
// 指定啟動一個有頁面的ability
IntentAgentInfo intenAgentinfo = new IntentAgentInfo(request.getNotificationId(), IntentAgentConstant.OperationType.START_ABILITY, IntentAgentConstant.Flags.UPDATE_PRESENT_FLAG, intentList, null);
// 獲取IntentAgent實例
IntentAgent intentAgent = IntentAgentHelper.getIntentAgent(mContext, intenAgentinfo);
request.setIntentAgent(intentAgent);
request.setTapDismissed(true);
try {
NotificationHelper.publishNotification(request);
} catch (RemoteException ex) {
HiLog.warn(LABEL, "publishNotification occur exception.");
}
取消通知
取消通知分為取消指定單條通知和取消所有通知,應用只能取消自己發(fā)布的通知。
int notification_id = 1;
try {
NotificationHelper.cancelNotification(notification_id);
} catch (RemoteException ex) {
HiLog.warn(LABEL, "cancelNotification occur exception.");
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: