OpenHarmony教程指南—事件的订阅和发布

介绍

本示例主要展示了公共事件相关的功能,实现了一个检测用户部分行为的应用。具体而言实现了如下几点功能:

1.通过订阅系统公共事件,实现对用户操作行为(亮灭屏、锁屏和解锁屏幕、断联网)的监测;

2.通过在用户主动停止监测行为时发布自定义有序公共事件,实现对用户主动触发监听行为的持久化记录;

3.通过在用户设置对某一事件的监听状态时发布粘性事件,记录下本次应用运行期间允许监听的事件列表,同时在应用退出时将临时允许的修改为不允许;

4.通过订阅指定应用事件,实现用户对指定卡片发送事件的监听。

效果预览

订阅系统公共事件,主动停止监听行为及对某一事件的监听状态时发布粘性事件

使用说明:

1.安装编译生成的hap包,依赖包hap,桌面上显示应用图标如下,点击图标即可进入应用。

2.进入应用显示菜单页,可选择"进入","历史","设置"及"关于"几个选项。

3.点击"进入"后跳转至主页面,点击主页面"开始监控"按钮,将开始监听系统公共事件,并进行计时,此时按钮内容变更为"停止监听";点击停止监听按钮,页面上将显示本次监听时长及监听期间收到的干扰信息汇总,并在页面右下角显示"查看详情"按钮,点击按钮将跳转至详情页,显示监听期间收到的干扰信息,应用当前仅监听了亮灭屏、锁屏和解锁屏幕、断联网等用户可操作的系统公共事件,后续可根据需求快速扩展。

4.返回至应用菜单页面,点击"历史"可查看用户操作监听的历史记录,当前支持每次运行期间最多存储10条历史记录,超过10条后将删除历史数据。

5.返回至应用菜单页面,点击"设置"可进行具体系统事件的监听配置,应用提供了"一直"、"仅本次"及"从不"三个选项,其中"仅本次"选项是指本次应用运行期间将监听特定系统公共事件,应用退出后该选项将自动调整为"从不"。

6.在设置页面,点击"自定义事件定向订阅"进入订阅页面,

  • 点击"订阅"按钮进行订阅事件,同时订阅指定本应用事件和订阅非指定应用事件。
  • 点击应用内卡片发送事件或点击应用外卡片发送事件。
  • 点击应用内卡片发送事件后,指定应用事件和非指定应用事件均会接收到卡片所发送的事件
    ;点击应用外卡片发送事件后,非指定应用事件会被接收,指定应用事件不会被接收。
  • 点击"取消订阅" 页面中会提示当前事件取消订阅。

7.返回至应用菜单页面,点击"关于"可查看应用版本信息及本示例的说明。

工程目录

CustomCommonEvent

entry/src/main/ets/
|---Application
|   |---MyAbilityStage.ts                    
|---component
|   |---Header.ets                           // 头部组件
|---entryformability
|   |---EntryFormAbility.ts                  // 卡片提供方  
|---feature
|   |---HistoryFeature.ts                    
|   |---LaunchFeature.ts                    
|   |---MainFeature.ts                    
|   |---SettingFeature.ts                    
|---LauncherAbility 
|   |---LauncherAbility.ts
|---MainAbility
|   |---MainAbility.ts
|---model
|   |---Consts.ts                            // 数据定义
|   |---Logger.ts                            // 日志打印  
|   |---SurveillanceEventsManager.ts         // 公共事件模块
|   |---Utils.ts                        
|---pages
|   |---About.ets                            // 关于页面
|   |---Detail.ets                           // 详情页面
|   |---History.ets                          // 历史页面
|   |---jumpToCommonEvent.ets                // 自定义订阅事件页面
|   |---Launch.ets                           // 发起页面
|   |---Main.ets                             // 进入页面
|   |---Setting.ets                          // 设置页面
|---publishcard
|   |---pages
|   |	|---PublishCard.ets              	 // 卡片页面

CustomCommonEventRely

entry/src/main/ets/
|---entryformability
|   |---EntryFormAbility.ts					// 发布事件
|---pages
|   |---Index.ets
|---widget
|   |---pages
|   |	|---PublishCard.ets 				// 发布事件的卡片

具体实现

  • 该示例entry部分分为五个模块:

进入模块

  • 使用到应用文上下文,createSubscriber方法创建订阅者,getCurrentTime获取获取自Unix纪元以来经过的时间进行对用户操作行为的监测功能页面开发。
  • 源码链接:Consts.ts,LaunchFeature.ts,LauncherAbility.ts,SurveillanceEventsManager.ts
  • 参考接口:@ohos.app.ability.common,@ohos.commonEventManager,@ohos.data.preferences,@ohos.commonEvent,@ohos.router,@ohos.systemTime

历史模块

  • 使用到应用文上下文,getPreferences方法获取Preferences实例,组件Header进行历史页面开发。
  • 源码链接:Header.ets,Consts.ts,HistoryFeature.ts
  • 参考接口:@ohos.app.ability.common,@ohos.data.preferences

设置模块

  • 本模块分为三个事件,分别为记录联网事件,记录灭屏事件,记录亮屏事件,进行锁屏事件、进行解锁屏幕事件,每一个事件都可进行一直,仅本次和从不的单项选择,使用到应用文上下文吗,CommonEvent.publish发布公共事件,getPreferences方法获取Preferences实例进行功能页面开发。
  • 源码链接:Header.ets,Consts.ts,SettingFeature.ts,SurveillanceEventsManager.ts
  • 参考接口:@ohos.app.ability.common,@ohos.data.preferences,@ohos.commonEvent,@ohos.router,@ohos.commonEvent

关于模块

  • 该模块开发主要介绍了本示例的功能作用以及说明了什么情况下不能使用。
  • 源码链接:Header.ets,Consts.ts
  • 设置中订阅事件模块本模块主要支持指定应用订阅自定义事件。subScribeInfo新增可选属性publisherBundleName,创建订阅对象时可指定PublisherBundlerName,事件发布时,获取订阅者信息,增加校验bundleName是否等于publisherBundlerName,相等则加入事件回调方,达成只接收指定发布方发布的事件的效果。源码链接:EntryFormAbility.ts,Index.ets,PublishCard.ets参考接口:@ohos.commonEventManager,@ohos.hilog,@ohos.app.form.formInfo,@ohos.app.form.formBindingData,@ohos.app.form.FormExtensionAbility

相关权限

ohos.permission.COMMONEVENT_STICKY

ohos.permission.REQUIRE_FORM

ohos.permission.GET_BUNDLE_INFO_PRIVILEGED

依赖

本应用依赖CustomCommonEventRely应用进行运行。

约束与限制

1.本示例仅支持标准系统上运行,支持设备:RK3568。

2.本示例为Stage模型,支持API11版本SDK,版本号:4.1.3.1;

3.本示例涉及使用系统接口:FormComponent ,需要手动替换Full SDK才能编译通过;

4.本示例需要使用DevEco Studio 3.1.1 Release (Build Version: 3.1.0.501, built on June 20, 2023)才可编译运行;

5.本示例涉及ohos.permission.REQUIRE_FORM和ohos.permission.GET_BUNDLE_INFO_PRIVILEGED权限为system_basic级别,需要配置高权限签名;

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/BasicFeature/Notification/CustomCommonEvent/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

为了能够让大家跟上互联网时代的技术迭代,在这里我特邀了几位行业大佬整理出一份最新版的鸿蒙学习提升资料,有需要的小伙伴自行领取,限时开源,先到先得~~~~

领取以下高清学习路线原图请点击→《鸿蒙 (Harmony OS)开发学习手册》纯血鸿蒙HarmonyOS基础技能学习路线图

领取以上完整高清学习路线图,请点击→《鸿蒙HarmonyOS分布式项目实战》小编自己整理的部分学习资料(包含有高清视频、开发文档、电子书籍等)

以上分享的学习路线都适合哪些人跟着学习?

-应届生/计算机专业

通过学习鸿蒙新兴技术,入行互联网,未来高起点就业。
-0基础转行

提前布局新方向,抓住风口,自我提升,获得更多就业机会。
-技术提升/进阶跳槽

发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术,享受蓝海红利。

最后

鸿蒙开发学习是一个系统化的过程,从基础知识的学习到实战技能的锤炼 ,再到对前沿技术的探索,每一环节都至关重要。希望这份教程资料能帮助您快速入门并在鸿蒙开发之路上步步攀升,成就一番事业。让我们一起乘风破浪,拥抱鸿蒙生态的广阔未来!

如果你觉得这篇内容对你有帮助,我想麻烦大家动动小手给我:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注我,同时可以期待后续文章ing,不定期分享原创知识。

想要获取更多完整鸿蒙最新VIP学习资料,请点击→《鸿蒙基础入门学习指南

相关推荐
Freerain9915 分钟前
鸿蒙Next ArkTS语法适配背景概述
华为·harmonyos
他的猫哎16 分钟前
鸿蒙 Navigation组件下的组件获取pageStack问题
harmonyos·鸿蒙
雨汨23 分钟前
鸿蒙之路的坑
华为·harmonyos
轻口味2 小时前
【每日学点鸿蒙知识】沙箱目录、图片压缩、characteristicsArray、gm-crypto 国密加解密、通知权限
pytorch·华为·harmonyos
xo198820116 小时前
鸿蒙人脸识别
redis·华为·harmonyos
塞尔维亚大汉6 小时前
【OpenHarmony】 鸿蒙 UI开发之CircleIndicator
harmonyos·arkui
BisonLiu6 小时前
华为仓颉鸿蒙HarmonyOS NEXT仓颉原生数据网络HTTP请求(ohos.net.http)
harmonyos
BisonLiu6 小时前
华为仓颉鸿蒙NEXT原生加解密算法库框架
harmonyos
变色龙云6 小时前
网页生成鸿蒙App
华为·harmonyos
BisonLiu6 小时前
华为仓颉鸿蒙HarmonyOS NEXT仓颉原生ohos.request(上传下载)
harmonyos