当前位置: 首页 > news >正文

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学习资料,请点击→《鸿蒙基础入门学习指南》

相关文章:

  • ospf虚链路实验简述
  • vue2 elementui 封装一个动态表单复杂组件
  • Neo4J
  • 数据库_关系代数的运算
  • Oracle存储过程干货(一):存储过程基础
  • 双体系Java学习之算术运算符,赋值运算符,关系运算符
  • 20个Python函数程序实例
  • mysql的语法学习总结3(一些常见的问题)
  • C语言:判断闰年(简单)
  • 14:00面试,15:00就出来了,问的问题过于变态了。。。
  • matlab 提取分割位于多边形区域边缘内部或边缘上的点
  • PHP伪协议是什么?
  • Java引用传递及基本应用
  • 构建MySQL数据库的高可用与高容错系统:关键策略与最佳实践
  • Android修改源码实现root
  • “大数据应用场景”之隔壁老王(连载四)
  • AngularJS指令开发(1)——参数详解
  • Django 博客开发教程 16 - 统计文章阅读量
  • OSS Web直传 (文件图片)
  • PAT A1092
  • React-flux杂记
  • sessionStorage和localStorage
  • SpringBoot几种定时任务的实现方式
  • vue的全局变量和全局拦截请求器
  • 简单基于spring的redis配置(单机和集群模式)
  • 前端攻城师
  • 前端性能优化——回流与重绘
  • MPAndroidChart 教程:Y轴 YAxis
  • 通过调用文摘列表API获取文摘
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • #NOIP 2014# day.1 T2 联合权值
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (笔试题)合法字符串
  • (层次遍历)104. 二叉树的最大深度
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • .NET Reactor简单使用教程
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET命令行(CLI)常用命令
  • .pyc文件是什么?
  • /var/spool/postfix/maildrop 下有大量文件
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [20180129]bash显示path环境变量.txt
  • [51nod1610]路径计数
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [CakePHP] 在Controller中使用Helper
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包