侵权投诉

鸿蒙系统中如何实现通知功能

HarmonyOS技术社区 2021-09-06 09:42 次阅读

HarmonyOS 通过 ANS(Advanced Notification Service,即通知增强服务)系统服务来为应用程序提供发布通知的能力。

通知提供应用的即时消息或通信消息,用户可以直接删除或点击通知触发进一步的操作。

功能介绍

HarmonyOS 提供了通知功能,即在一个应用的 UI 界面之外显示的消息,主要用来提醒用户有来自该应用中的信息。

当应用向系统发出通知时,它将先以图标的形式显示在通知栏中,用户可以下拉通知栏查看通知的详细信息。

常见的使用场景:

显示接收到短消息、即时消息等。

显示应用的推送消息,如广告、版本更新等。

显示当前正在进行的事件,如播放音乐、导航、下载等。

开发指南

通知的开发指导分为创建 NotificationSlot、发布通知和取消通知等开发场景。

①创建 NotificationSlot

代码如下:

NotificationSlot slot = new NotificationSlot(“slot_001”, “slot_default”, NotificationSlot.LEVEL_MIN); // 创建notificationSlot对象

slot.setLevel(LEVEL_HIGH);//设置通知优先级

slot.setDescription(“NotificationSlotDescription”);

slot.setEnableVibration(true); // 设置振动提醒

slot.setLockscreenVisibleness(NotificationRequest.VISIBLENESS_TYPE_PUBLIC);//设置锁屏模式

slot.setEnableLight(true); // 设置开启呼吸灯提醒

slot.setLedLightColor(Color.RED.getValue());// 设置呼吸灯的提醒颜色try {

NotificationHelper.addNotificationSlot(slot);

} catch (RemoteException ex) {

HiLog.warn(LABEL, “addNotificationSlot occur exception.”);

}

②发布通知

构建 NotificationRequest 对象:

request = new NotificationRequest(notificationId);

request.setSlotId(slot.getId());

调用 setContent() 设置通知的内容:

NotificationRequest.NotificationLongTextContent content = new NotificationRequest.NotificationLongTextContent();

content.setTitle(title)

.setText(messageContent);

NotificationRequest.NotificationContent notificationContent = new NotificationRequest.NotificationContent(

content);

request.setGroupValue(“group information”);

request.setContent(notificationContent); // 设置通知的内容

request.setTapDismissed(!tapDismissed);//设置用户点击通知后自动消失

调用 publishNotification() 发布通知:

try {

NotificationHelper.publishNotification(request);

} catch (RemoteException ex) {

HiLog.warn(LABEL, “publishNotification occur exception.”);

}

③取消通知

如下:

调用cancelNotification()取消指定的单条通知。

try {

NotificationHelper.cancelNotification(notificationId);

} catch (RemoteException ex) {

HiLog.error(LABEL, “Exception occurred during cancelNotification invocation.”);

}

调用cancelAllNotifications()取消所有通知。

try {

NotificationHelper.cancelAllNotifications();

} catch (RemoteException ex) {

HiLog.error(LABEL, “Exception occurred during cancelAllNotifications invocation.”);

}

④通过 IntentAgent 触发通知的跳转

代码如下:

//点击通知,跳转至指定的Ability

Intent intent1 = new Intent();

// 指定要启动的Ability的BundleName和AbilityName字段

Operation operation = new Intent.OperationBuilder()

.withDeviceId(“”)

.withBundleName(“com.example.myapplication”)

.withAbilityName(“com.example.myapplication.SecondAbility”)

.build();

// 将Operation对象设置到Intent中

intent1.setOperation(operation);

List《Intent》 intentList = new ArrayList《》();

intentList.add(intent1);

// 定义请求码int requestCode = 200;

// 设置flags

List《IntentAgentConstant.Flags》 flags = new ArrayList《》();

flags.add(IntentAgentConstant.Flags.UPDATE_PRESENT_FLAG);

// 指定启动一个有页面的Ability

IntentAgentInfo paramsInfo = new IntentAgentInfo(requestCode,

IntentAgentConstant.OperationType.START_ABILITY, flags, intentList, null);

// 获取IntentAgent实例

IntentAgent agent = IntentAgentHelper.getIntentAgent(context, paramsInfo);

//5.设置通知的IntentAgent

request.setIntentAgent(agent);

实现效果图:

附上源码:

NotificationUtils:

public class NotificationUtils {

private static final int LEVEL_HIGH = 4;

private static NotificationRequest request;

private static final int MY_MODULE = 0x00201;

private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, MY_MODULE, “MY_TAG”);

private static final boolean tapDismissed = false;

//3.调用publishNotification()发送通知

public static void publishNotification() {

try {

NotificationHelper.publishNotification(request);

} catch (RemoteException ex) {

HiLog.warn(LABEL, “publishNotification occur exception.”);

}

}

public static void initNotificationSlot(Context context, int notificationId, String title,

String messageContent) {

//1.创建NotificationSlot

NotificationSlot slot = new NotificationSlot(“slot_001”, “slot_default”, NotificationSlot.LEVEL_MIN); // 创建notificationSlot对象

slot.setLevel(LEVEL_HIGH);//设置通知优先级

slot.setDescription(“NotificationSlotDescription”);

slot.setEnableVibration(true); // 设置振动提醒

slot.setLockscreenVisibleness(NotificationRequest.VISIBLENESS_TYPE_PUBLIC);//设置锁屏模式

slot.setEnableLight(true); // 设置开启呼吸灯提醒

slot.setLedLightColor(Color.RED.getValue());// 设置呼吸灯的提醒颜色

try {

NotificationHelper.addNotificationSlot(slot);

} catch (RemoteException ex) {

HiLog.warn(LABEL, “addNotificationSlot occur exception.”);

}

request = new NotificationRequest(notificationId);

request.setSlotId(slot.getId());

NotificationRequest.NotificationLongTextContent content = new NotificationRequest.NotificationLongTextContent();

content.setTitle(title)

.setText(messageContent);

NotificationRequest.NotificationContent notificationContent = new NotificationRequest.NotificationContent(

content);

request.setGroupValue(“group information”);

request.setContent(notificationContent); // 设置通知的内容

request.setTapDismissed(!tapDismissed);//设置用户点击通知后自动消失

//4.返回应用,首先获取IntentAgent

Intent intent1 = new Intent();

// 指定要启动的Ability的BundleName和AbilityName字段

Operation operation = new Intent.OperationBuilder()

.withDeviceId(“”)

.withBundleName(“com.example.myapplication”)

.withAbilityName(“com.example.myapplication.SecondAbility”)

.build();

// 将Operation对象设置到Intent中

intent1.setOperation(operation);

List《Intent》 intentList = new ArrayList《》();

intentList.add(intent1);

// 定义请求码

int requestCode = 200;

// 设置flags

List《IntentAgentConstant.Flags》 flags = new ArrayList《》();

flags.add(IntentAgentConstant.Flags.UPDATE_PRESENT_FLAG);

// 指定启动一个有页面的Ability

IntentAgentInfo paramsInfo = new IntentAgentInfo(requestCode,

IntentAgentConstant.OperationType.START_ABILITY, flags, intentList, null);

// 获取IntentAgent实例

IntentAgent agent = IntentAgentHelper.getIntentAgent(context, paramsInfo);

//5.设置通知的IntentAgent

request.setIntentAgent(agent);

}

}

MainAbilitySlice:

public class MainAbilitySlice extends AbilitySlice implements ClickedListener {

@Override

public void onStart(Intent intent) {

super.onStart(intent);

super.setUIContent(ResourceTable.Layout_ability_main);

//通知

Text notification = (Text) findComponentById(ResourceTable.Id_text_notification);

notification.setClickedListener(this);

//通知标题

String title =“测试通知”;

//通知内容文本

String content=“通知的内容已经到了!”;

NotificationUtils.initNotificationSlot(this,1,title,content);

}

@Override

public void onActive() {

super.onActive();

}

@Override

public void onForeground(Intent intent) {

super.onForeground(intent);

}

@Override

public void onClick(Component component) {

switch (component.getId()){

case ResourceTable.Id_text_notification:

NotificationUtils.publishNotification();

break;

}

}

}

ability_main.xml:

《?xml version=“1.0” encoding=“utf-8”?》《DirectionalLayout

xmlns:ohos=“http://schemas.huawei.com/res/ohos”

ohos:height=“match_parent”

ohos:orientation=“vertical”

ohos:width=“match_parent”》

《Text

ohos:id=“$+id:text_notification”

ohos:width=“match_parent”

ohos:height=“match_content”

ohos:text_size=“25fp”

ohos:top_margin=“300vp”

ohos:left_margin=“15vp”

ohos:right_margin=“15vp”

ohos:background_element=“$graphic:background_text”

ohos:text=“通知”

ohos:text_weight=“1000”

ohos:text_alignment=“horizontal_center”/》《/DirectionalLayout》

background_text.xml:

《?xml version=“1.0” encoding=“utf-8”?》《shape xmlns:ohos=“http://schemas.huawei.com/res/ohos”

ohos:shape=“rectangle”》

《corners

ohos:radius=“20”/》

《solid

ohos:color=“#a5b3a9”/》《/shape》

责任编辑:haq

原文标题:鸿蒙OS通知功能,轻松实现!

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

开源大师兄 青少年OpenHarmony开发板硬件特性介绍

继OpenHarmony 3.0  LTS版本于 2021 年 9 月 30 日上线以来,在包括教育....
发表于 10-27 12:14 92次 阅读
开源大师兄 青少年OpenHarmony开发板硬件特性介绍

《道德经》原子化服务UX历程和后续升级计划

发表于 10-27 11:36 0次 阅读
《道德经》原子化服务UX历程和后续升级计划

网易云和腾讯互掐起来了?鸿蒙“后院”起火了

今天打开手机老王看到了一条有意思的新闻:“网易云和腾讯QQ音乐都说自己是第一家接入鸿蒙的流媒体音乐,要互掐了吗?” 发...
发表于 10-27 10:08 0次 阅读

HDC技术分论坛:HarmonyOS新一代UI框架的全面解读

作者:yuzhiqiang,UI编程框架首席技术专家在Harmony 3.0.0开发者预览版中,包含了新一代的声明式UI框架ArkUI 3.0、多语...
发表于 10-26 18:48 101次 阅读
HDC技术分论坛:HarmonyOS新一代UI框架的全面解读

HarmonyOS IDE工具DevEco 新版本3.0 Beta1发布

2021年10月22日的华为开发者大会HDC.Together 2021主题演讲会上,我们发布了HarmonyOS 3.0.0开发者预览版。预览版本中包含...
发表于 10-26 18:16 202次 阅读
HarmonyOS IDE工具DevEco 新版本3.0 Beta1发布

鸿蒙3.0给业内带来了哪些惊喜

据海外调研机构数据预测,2021年全球移动操作系统市场,Android占据73%的市场份额,苹果iO....
的头像 电子发烧友网 发表于 10-26 17:35 329次 阅读

第二届HarmonyOS开发者创新大赛正式启动 梦想再度启航

在10月22日举办的 华为 开发者大会(Together)上,第二届“ HarmonyOS 开发者创....
发表于 10-26 17:09 75次 阅读
第二届HarmonyOS开发者创新大赛正式启动 梦想再度启航

华为开发者大会有什么亮点

华为开发者大会2021于10月22至24在广东松山湖举行,开发者大会HDC 2021主题演讲嘉宾阵容....
的头像 lhl545545 发表于 10-26 17:03 276次 阅读

什么人会叁加华为开发者大会

华为开发者大会2021在广东东莞盛大召开,2021华为开发者大会参会者有华为专家、全球开发者等受邀参....
的头像 lhl545545 发表于 10-26 16:42 301次 阅读

华为开发者大会2021 10月官网

华为开发者大会2021近日正式在广东举行,本次大会聚焦HarmonyOS、智能家居、智慧办公、HMS....
的头像 lhl545545 发表于 10-26 16:26 352次 阅读

HDC2021HarmonyOS学生公开课:校园布道未来可循

为了让学生了解HarmonyOS最新技术、商业价值、生态价值,以及学生开发者如何成长等信息,10月2....
的头像 话说科技 发表于 10-26 15:06 476次 阅读
HDC2021HarmonyOS学生公开课:校园布道未来可循

HarmonyOS原子化服务新赛道:系统级入口服务中心

10月22日-24日,为期三天的华为开发者大会2021(Together)在东莞举行。本次大会《Ha....
的头像 话说科技 发表于 10-26 15:05 548次 阅读
HarmonyOS原子化服务新赛道:系统级入口服务中心

华为开发者大会2021上市股票

华为开发者大会2021上市股票有哪些?华为开发者大会2021上市股票有中国长城、中国软件、金山办公、....
的头像 lhl545545 发表于 10-26 14:37 205次 阅读

华为2021开发者大会最新消息

华为开发者大会2021在中国松山湖举行,会上,华为公司基于OpenHarmony提供了Harmony....
的头像 lhl545545 发表于 10-26 14:20 191次 阅读

2021华为开发者大会介绍

华为开发者大会2021精彩纷呈,大会上主要聚焦了HarmonyOS、智慧办公、HMS Core等热门....
的头像 lhl545545 发表于 10-26 11:45 238次 阅读

Harmony应用开发--自定义标题栏实战

在Harmony开发过程中,如果对系统标题栏感到不满意,可以进行自行修改设计。配置文件(config.json)修改,在module下添加下面内...
发表于 10-26 11:37 101次 阅读
Harmony应用开发--自定义标题栏实战

华为开发者大会全程回顾

华为开发者大会2021(Together)在东莞松山湖已经完美落幕,下面我们一起来看看2021华为开....
的头像 lhl545545 发表于 10-26 11:16 215次 阅读

华为开发者大会2021鸿蒙系统升级

2021华为开发者大会10月22日至24日如期在松山湖举行,会上,华为正式发布了HarmonyOS3....
的头像 lhl545545 发表于 10-26 10:08 255次 阅读

华为开发者大会在哪里看

2021年华为开发者大会近日正式在东莞松山湖举行,会上华为发布了HarmonyOS 3开发者预览版、....
的头像 lhl545545 发表于 10-26 09:56 171次 阅读

万物智联与烟火人间 HDC 2021华为开发者大会 一场跨越20年的双向奔赴

自从2011年,Gartner在著名的“新兴技术炒作周期”上,增加了一个新技术名词:物联网。IoT从....
的头像 脑极体 发表于 10-26 09:00 816次 阅读
万物智联与烟火人间 HDC 2021华为开发者大会 一场跨越20年的双向奔赴

华为开发者大会2021在哪

华为开发者大会2021在广东东莞松山湖举行,时间为三天,10月22至24天,华为官方已经公布了开发者....
的头像 lhl545545 发表于 10-25 17:53 450次 阅读

太强了!华为自研鸿蒙编程语言,行业大佬都已经偷偷学起来了

华为开发者大会 2021(Together)上,Harmony OS 3 开发者预览版正式发布,华为鸿蒙又是一个历史性的进步啊,而且,华为还表...
发表于 10-25 16:53 270次 阅读

华为开发者大会2021概念股

  华为开发者大会2021在10月22至24日在东莞松山湖如期举行,中国软件万兴科技等鸿蒙概念股有望....
的头像 lhl545545 发表于 10-25 16:44 325次 阅读

华为开发者大会值得参加吗

2021华为开发者大会值得参加。10月22至24日,2021华为开发者大会聚焦行业技术大咖发表了技术....
的头像 lhl545545 发表于 10-25 16:15 143次 阅读

2021华为开发者大会分论坛

华为开发者大会2021近日在广东如期举行,本次大会HarmonyOS鸿蒙生态成为重要参与者,华为除了....
的头像 lhl545545 发表于 10-25 15:56 320次 阅读

HarmonyOS 3.0.0开发者预览版全新发布

2021年10月22日在华为开发者大会HDC.Together 2021 主题演讲上,我们发布了HarmonyOS 3.0.0开发者预览版,主要内容包括:...
发表于 10-25 15:49 402次 阅读
HarmonyOS 3.0.0开发者预览版全新发布

2021华为开发者大会心得体会

10月22至24日华为正式举行了2021华为HDC开发者大会,华为通过展示软硬件协同的全场景多终端教....
的头像 lhl545545 发表于 10-25 15:25 182次 阅读

华为开发者大会是干嘛的

2021华为HDC开发者大会堪称“开发者嘉年华”,华为开发者大会是面向ICT等领域全球开发者的年度旗....
的头像 lhl545545 发表于 10-25 15:12 184次 阅读

不容错过!鸿蒙开发必备神器,老王月薪过万的秘诀都在这了

大家应该都知道在华为开发者大会HDC.Together 2021主题演讲会上,华为发布了HarmonyOS3.0.0开发者预览版。 预览版本中...
发表于 10-25 14:47 44次 阅读

HarmonyOS原子化服务卡片开发-快照实战说明

1.快照作用在服务中心显示卡片的过程中,因为页面加载需要一定时间,所以在服务中心中会先显示快照,后续再显示加载的小卡页面,...
发表于 10-25 13:42 0次 阅读
HarmonyOS原子化服务卡片开发-快照实战说明

华为开发者大会2021视频

华为开发者大会2021(Together)在东莞如期举行,华为消费总裁CEO余承恩在以“未来 有迹可....
的头像 lhl545545 发表于 10-25 11:23 285次 阅读

2020华为开发者大会直播入口

2020 年华为开发者大会与9 月10 日至9 月12 日在东莞松山湖举行。会上,华为揭开 了关于H....
的头像 lhl545545 发表于 10-25 11:09 217次 阅读

华为开发者大会2021举办时间

华为开发者大会HDC 2021在10月22至24日如期召开,地点在中国松山湖举行。华为与全球开发者汇....
的头像 lhl545545 发表于 10-25 10:50 198次 阅读

华为开发者大会2021官网

华为开发者大会2021近日已经正式开幕,华为公司在会上宣布HMS全球开发者已达510万,通过Harm....
的头像 lhl545545 发表于 10-25 10:36 226次 阅读

HarmonyOS驱动华为全屋智能再升级让智能家体验更近一步

(中国,东莞,2021年10月23日)华为开发者大会2021(Together)如期在东莞松山湖举行....
的头像 话说科技 发表于 10-25 10:31 260次 阅读
HarmonyOS驱动华为全屋智能再升级让智能家体验更近一步

梦想再度启航,第二届HarmonyOS开发者创新大赛正式启动

在10月22日举办的华为开发者大会(Together)上,第二届“HarmonyOS开发者创新大赛”....
的头像 话说科技 发表于 10-25 10:18 6327次 阅读
梦想再度启航,第二届HarmonyOS开发者创新大赛正式启动

华为开发者大会发布HarmonyOS 3预览版等全新开发技术,搭载HarmonyOS的设备超过1.5亿台

HarmonyOS已在超过1.5亿智能手机、平板、手表、智慧屏等设备上应用,成为万物智联时代的数字底....
的头像 西西 发表于 10-25 09:55 704次 阅读

华为何刚:网络安全和隐私保护是华为践行全场景生态战略的原点

华为提出消费者业务安全与隐私保护的“四大主张”,即自上而下的组织与流程保障、制定严苛的隐私安全原则、....
发表于 10-25 09:50 238次 阅读

鸿蒙3开发者预览版发布 华为鸿蒙编程语言正在研发中

2021华为开发者大会近日在广东东莞正式举行,随后华为消费总裁余承恩宣布将带来全新HarmonyOS....
的头像 lhl545545 发表于 10-25 09:13 310次 阅读

2021华为开发者大会分论坛HarmonyOS学生公开课布道师从零开始从现在开始

2021华为开发者大会分论坛HarmonyOS学生公开课布道师从零开始从现在开始 在正在直播的202....
的头像 inr999 发表于 10-24 11:47 603次 阅读
2021华为开发者大会分论坛HarmonyOS学生公开课布道师从零开始从现在开始

华为开发者分论坛HarmonyOS学生公开课-HarmonyOS开发者三大成长阶段与学习资源

2021华为开发者分论坛HarmonyOS学生公开课-HarmonyOS开发者三大成长阶段与学习资源
的头像 lhl545545 发表于 10-24 11:43 518次 阅读
华为开发者分论坛HarmonyOS学生公开课-HarmonyOS开发者三大成长阶段与学习资源

2021华为开发者大会分论坛HarmonyOS学生公开课解读HarmonyOS布道师

在今天的2021华为开发者大会分论坛HarmonyOS学生公开课上华为HarmonyOS开发者运营高....
的头像 inr999 发表于 10-24 11:35 536次 阅读
2021华为开发者大会分论坛HarmonyOS学生公开课解读HarmonyOS布道师

华为开发者分论坛HarmonyOS学生公开课-如何成为HarmonyOS校园布道师

2021华为开发者分论坛HarmonyOS学生公开课-如何成为HarmonyOS校园布道师
的头像 lhl545545 发表于 10-24 11:33 488次 阅读
华为开发者分论坛HarmonyOS学生公开课-如何成为HarmonyOS校园布道师

华为开发者分论坛HarmonyOS学生公开课-开发者成长图谱

2021华为开发者分论坛HarmonyOS学生公开课-开发者成长图谱
的头像 lhl545545 发表于 10-24 11:25 393次 阅读
华为开发者分论坛HarmonyOS学生公开课-开发者成长图谱

华为开发者分论坛HarmonyOS学生公开课-OpenHarmony Codelabs开发案例

2021华为开发者分论坛HarmonyOS学生公开课-OpenHarmony Codelabs开发案....
的头像 lhl545545 发表于 10-24 11:25 383次 阅读
华为开发者分论坛HarmonyOS学生公开课-OpenHarmony Codelabs开发案例

华为开发者分论坛HarmonyOS学生公开课-10分钟玩转codeLabs应用案例

2021华为开发者分论坛HarmonyOS学生公开课-10分钟玩转codeLabs应用案例
的头像 lhl545545 发表于 10-24 11:17 383次 阅读
华为开发者分论坛HarmonyOS学生公开课-10分钟玩转codeLabs应用案例

2021华为开发者大会HarmonyOS学生公开课上分享精彩样例

在今天的2021华为开发者大会分论坛HarmonyOS学生公开课上分享了很多的精彩样例;比如分布式任....
的头像 inr999 发表于 10-24 11:17 468次 阅读
2021华为开发者大会HarmonyOS学生公开课上分享精彩样例

华为开发者分论坛HarmonyOS学生公开课-如何学习HarmonyOS应用开发?

2021华为开发者分论坛HarmonyOS学生公开课-如何学习HarmonyOS应用开发?
的头像 lhl545545 发表于 10-24 11:09 310次 阅读
华为开发者分论坛HarmonyOS学生公开课-如何学习HarmonyOS应用开发?

华为开发者分论坛HarmonyOS学生公开课-10分钟成为HarmonyOS开发者

2021华为开发者分论坛HarmonyOS学生公开课-10分钟成为HarmonyOS开发者
的头像 lhl545545 发表于 10-24 11:03 318次 阅读
华为开发者分论坛HarmonyOS学生公开课-10分钟成为HarmonyOS开发者

2021华为开发者大会HarmonyOS学生公开课上教你10分钟成为HarmonyOS开发者

2021华为开发者大会HarmonyOS学生公开课上教你10分钟成为HarmonyOS开发者 学习H....
的头像 inr999 发表于 10-24 11:03 361次 阅读
2021华为开发者大会HarmonyOS学生公开课上教你10分钟成为HarmonyOS开发者

华为开发者分论坛HarmonyOS学生公开课-HarmonyOS的无限可能

2021华为开发者分论坛HarmonyOS学生公开课-HarmonyOS的无限可能   推荐链接:h....
的头像 lhl545545 发表于 10-24 11:03 286次 阅读
华为开发者分论坛HarmonyOS学生公开课-HarmonyOS的无限可能