鸿蒙实战开发-如何使用Stage模型卡片

news2024/12/23 13:30:57

介绍

本示例展示了Stage模型卡片提供方的创建与使用。

用到了卡片扩展模块接口,@ohos.app.form.FormExtensionAbility 。

卡片信息和状态等相关类型和枚举接口,@ohos.app.form.formInfo 。

卡片提供方相关接口的能力接口,@ohos.app.form.formProvider 。

应用组件间的信息传递接口,@ohos.app.ability.Want 。

效果预览

在这里插入图片描述
使用说明

1.部分设备的桌面不支持卡片,可以通过自己的开发卡片使用方,进行卡片的创建、更新和删除等操作。

2.卡片的样式如"添加卡片"所示。当卡片更新时,卡片上的温度和时间会产生变化。

3.安装卡片应用或formProvider应用,长按卡片应用图标或formProvider应用图标弹出菜单,点击"服务卡片"选项可以添加服务卡片至桌面(第3张,第4张卡片为formProvider应用卡片;第5张,第6张为卡片应用卡片);

4.长按数据卡片弹出菜单,点击"移除"可以将已添加至桌面的数据卡片从桌面上移除;

5.点击打开卡片应用图标或formProvider应用图标,点击"修改订阅条件"按键,界面将跳转至修改订阅条件界面,对应选择想要发布的数据完成对订阅条件的修改,离开页面或退出应用后再次打开修改订阅条件页面,页面单选框会显示当前订阅的城市;

6.在卡片应用或formProvider应用应用中点击"发布数据"按键,界面将跳转至数据发布界面,对应选择想要发布的数据并点击"发布数据"完成数据发布(若选择发布的城市与当前订阅城市不一致,则不能将数据更新至卡片);

工程目录

entry/src/main
|---module.json5                           // 添加卡片拓展能力
|---/ets/pages
|   |---index.ets                          // 首页
|   |---second.ets                         // 第二跳转页
|---/ets/FormAbility                                 
|   |---FormAbility.ts                     // 定义卡片对象首次被创建时需要做的操作
|---js/widget/index                        // 定义卡片内容                 
|   |---index.hml                                                    
|   |---index.css                          
|   |---index.json                         
|---resources/base/profile                                  
|   |---form_config.json                   // 配置卡片(卡片名称,引入js卡片,卡片窗口大小等)                          
persistentProxyForm/src/main/
|---common
|  |---StatePersistence.ts                // 订阅条件数据持久化
|  └---Logger.ts
|---ets
|  └---dataShare
|  | └---DataShare.ts
|  |---entryability
|  |  └---PersistentEntryAbility.ts
|  |---entryformability
|  |  └---EntryFormAbility.ts
|  |---pages
|  |  |---Index.ets                        // PersistentEntryAbility页面
|  |  |---ModifyConditionIndex.ets         // 修改订阅条件页面
|  |  └---PublishIndex.ets                 // 发布数据页面
|  └---widget
|     └---pages
|        └---WidgetCard.ets                // ArkTS卡片
|---js
|  |---common
|  |---i18n
|  └---widgetJS
|     └---pages
|        └---index
|           |---index.css                  // JS卡片样式
|           |---index.hml                  // JS卡片
|           └---index.json                 // JS卡片默认值
└---resources    
processProxyForm/src/main/
|---common
|  |---StatePersistence.ts                 // 订阅条件数据持久化
|  └---Logger.ts
|---ets
|  |---entryability
|  |  └---ProcessEntryAbility.ts
|  |---entryformability
|  |  └---ProcessEntryFormAbility.ts
|  |---pages
|  |  |---Index.ets                         // ProcessEntryAbility页面
|  |  |---ModifyConditionIndex.ets          // 修改订阅条件页面
|  |  └---PushIndex.ets                     // 发布数据页面
|  └---widget
|     └---pages
|        └---WidgetCard.ets                 // ArkTS卡片
|---js
|  |---common
|  |---i18n
|  └---jsWidget
|     └---pages
|        └---index
|           |---index.css                    // JS卡片样式
|           |---index.hml                    // JS卡片
|           └---index.json                   // JS卡片默认值
└---resources                                // 资源信息

相关概念

Ability:Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。

具体实现

1、在module.json5文件添加拓展能力,类型为卡片,并设置卡片入口srcEntrance和卡片元数据metadata。
2、初始化卡片:通过实现@ohos.app.form.FormExtensionAbility卡片操作类,在卡片对象首次被创建时,初始化卡片绑定数据为空,并将卡片状态设置为就绪状态READY。 例如:onCreate(){ formBindingData.createFormBindingData({}) onAcquireFormState(want) { return formInfo.FormState.READY }。
3、配置卡片:用js编写相应的卡片,将卡片配置到resources/base/profile/form_config 。

  • 修改数据卡片的订阅条件的功能封装在ModifyConditionIndex.ets中。
  • 使用modifyCondition来获取所有已经建立出的卡片对象。
  • 修改订阅条件:使用updateCardDisplayContent遍历所有卡片对象,并根据界面获取的订阅条件数据修改订阅条件。退出页面或应用后再次打开修改订阅条件页面,可以保留上次订阅的城市选择。
  • 发布数据的功能封装在PublishIndex.ets及PushIndex.ets中,
  • PublishIndex.ets使用updateRDB来修改rdb数据库中的对应数据。
  • PushIndex.ets使用getRunningFormInfosByFilter获取已经建立出的卡片对象,并使用updateCardDisplayContent遍历所有卡片对象,使用createDataShareHelper创建DataShareHelper对象,并根据界面获取的数据信息使用publish进行数据的发布以实现发布数据的功能
  • 在dataShare模块中,建立rdb数据库,并提供对应update方法。
  • 在onCreate中初始化数据库中的数据。
  • 在update中实现对应的数据更新方法。

相关权限

ohos.permission.START_ABILITIES_FROM_BACKGROUND

ohos.permission.START_INVISIBLE_ABILITY

ohos.permission.GET_BUNDLE_INFO_PRIVILEGED

ohos.permission.GET_BUNDLE_INFO

ohos.permission.REQUIRE_FORM

依赖

1.本应用中Form.test.ets需要安装在仿桌面应用上进行测试。launcher应用地址:Launcher

2.本应用中Form.test.ets需要安装卡片应用以及formProvider应用进行测试。(以上两个应用为本工程的feature module)

约束与限制

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

2.本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release)。

3.本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。

4.本示需要使用Full SDK编译。使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换。

5.本示例所配置的权限为system_core级别(相关权限级别可通过权限定义列表查看),需要手动配置对应级别的权限签名(具体操作可查看自动化签名方案)。

6.本示例类型为系统应用,需要手动配置对应级别的应用类型(“app-feature”: “hos_system_app”)。具体可参考profile配置文件bundle-info对象内部结构

7.本示例使用了ServiceExtensionAbility,需要手动配置特权应用能力申请"app-privilege-capabilities": [“AllowAppUsePrivilegeExtension”],否则安装失败。在文件最后添加内容:“app-privilege-capabilities” : [ “AllowAppUsePrivilegeExtension” ]

8.本示例中使用到DataShareExtensionAbility,需要将本示例加入到白名单中再进行安装。详细内容如下 { “bundleName”: “ohos.samples.formextability”, “app_signature” : [], “associatedWakeUp”: true, “allowAppUsePrivilegeExtension”: true }

下载

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

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

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→HarmonyOS教学视频:https://qr21.cn/FV7h05

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等…视频教程

在这里插入图片描述
在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF: 获取完整版白皮书方式请点击→https://qr21.cn/FV7h05

在这里插入图片描述

鸿蒙 (Harmony OS)开发学习手册→https://qr21.cn/FV7h05

一、入门必看

1.应用开发导读(ArkTS)
2………
在这里插入图片描述

二、HarmonyOS 概念→https://qr21.cn/FV7h05

1.系统定义
2.技术架构
3.技术特性
4.系统安全
5…

在这里插入图片描述

三、如何快速入门?→https://qr21.cn/FV7h05

1.基本概念
2.构建第一个ArkTS应用
3…

在这里插入图片描述

四、开发基础知识→https://qr21.cn/FV7h05

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
在这里插入图片描述

五、基于ArkTS 开发→https://qr21.cn/FV7h05

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
在这里插入图片描述

更多了解更多鸿蒙开发的相关知识可以参考:https://qr21.cn/FV7h05

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1564996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32重要参考资料

stm32f103c8t6 一、引脚定义图 二、时钟树 三、系统结构图 四、启动配置 (有时候不小心短接VCC和GND,芯片会锁住,可以BOOT0拉高试试(用跳线帽接)) 五、最小系统原理图 可用于PCB设计

IP SSL的应用与安装

IP SSL,即互联网协议安全套接字层,它是一种为网络通信提供安全及数据完整性的安全协议。在网络传输过程中,IP SSL可以对数据进行加密,这样即便数据在传输途中被截取,没有相应的解密密钥也无法解读内容。这一过程如同将…

QT子窗口关闭时自动释放及注意事项

先说方法,很简单,有如下API函数可用: testDialog->setAttribute( Qt::WA_DeleteOnClose, true ); 他的官方解释如下: 最后,说一个注意事项: 最近写python程序比较多,回过头来&a…

Redis分布式锁的优化

分布式锁 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的实现 分布式锁的核心是实现多进程之间互斥,而满足这一点的方式有很多,常见的有三种: MySQLRedisZookeeper互斥利用mysql本身的互斥锁机制利…

韩顺平Java | C21网络编程

1 网络的相关概念 ip地址的组成:网络地址 主机地址 A类:0 ~ 2^7-1 0 ~ 127 B类:128 ~ 1282^6-1 128 ~ 191 C类:192 ~ 1922^5-1 192 ~ 223 D类:224 ~ 2242^4-1 224 ~ 239 E类:240 ~ 2402^3-1 240 ~ 2…

XenCenter 2024 导出虚拟机

选择导出 选择需要导出的虚拟机 导出位置,导出格式,名称 EULA 文档,根据自己需求配置 OVA是否需要加密验证,自己需要看,是否单独的OVA 确认导出配置,等待导出完成。 本地目录查看导出完成

批次号字符串的定制格式化处理

碰到个处理批次号的需求,处理成各种特殊的格式,方法还比较粗糙,可以优化,这里只做个记录。不仅仅适用于日期的格式化处理,特殊的字符规则都可以使用。 通过这个方法,维护成 "yyMMddpkx"这种特殊…

vue3中怎么点击按钮就上传文件

<el-button text type"primary" click"importBillExcel(row)">导入账单</el-button> // 导入客户账单Excel表 const importBillExcel (row) > {let input document.createElement(input)input.type fileinput.accept .pdf, .png, .zip…

基于知识图谱的跨项目安全缺陷报告预测方法

源自&#xff1a;软件学报 作者&#xff1a;郑炜, 刘程远, 吴潇雪, 陈翔, 成婧源, 孙小兵, 孙瑞阳 “人工智能技术与咨询” 发布 摘 要 安全缺陷报告可以描述软件产品中的安全关键漏洞. 为了消除软件产品的安全攻击风险, 安全缺陷报告(security bug report, SBR)预测越来越…

QT - 日志:qDebug/qInfo/qWarning/qCritical

篇一、日志打印函数 头文件&#xff1a; #include <QDebug> 代码&#xff1a;qDebug()<<"hello world!"; 其他打印级别&#xff1a; qInfo(): 普通信息 qDebug(): 调试信息 qWarning(): 警告信息 qCritical(): 严重错误 qFatal(): 致命错误 1. qDebug…

认识什么是Webpack

目录 1. 认识Webpack 1.1. 什么是Webpack?&#xff08;定义&#xff09; 1.2. 使用Webpack 1.2.1. 需求 1.2.2. 步骤 1.3. 入口和出口默认值 1.3.1. 需求代码如下 2. 修改Webpack打包入口和出口 2.1. 步骤&#xff1a; 2.2. 注意 3. Webpack自动生成html文件 3.1.…

OpenHarmony实战:轻量带屏解决方案之恒玄芯片移植案例

本文章基于恒玄科技 BES2600W 芯片的欧智通 Multi-modal V200Z-R 开发板&#xff0c;进行轻量带屏开发板的标准移植&#xff0c;开发了智能开关面板样例&#xff0c;同时实现了 ace_engine_lite、arkui_ui_lite、aafwk_lite、appexecfwk_lite、HDF 等部件基于 OpenHarmony Lite…

【C++庖丁解牛】高阶数据结构---红黑树详解(万字超详细全面介绍红黑树)

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.红黑树的概念2.红黑…

【Go】十七、进程、线程、协程

文章目录 1、进程、线程2、协程3、主死从随4、启动多个协程5、使用WaitGroup控制协程退出6、多协程操作同一个数据7、互斥锁8、读写锁9、deferrecover优化多协程 1、进程、线程 进程作为资源分配的单位&#xff0c;在内存中会为每个进程分配不同的内存区域 一个进程下面有多个…

为什么mac文件拖拽不了 mac文件拖不进硬盘里 macbookpro文件无法拖进移动硬盘 Tuxera NTFS for Mac 2023绿色

如果你是一位Mac用户&#xff0c;你可能会遇到这样的问题&#xff1a;你想把Mac上的文件拖拽到其他位置&#xff0c;比如桌面、文件夹或者外接硬盘&#xff0c;但是却发现无法操作&#xff0c;这是为什么呢&#xff1f;这篇文章将为你解答为什么mac文件拖拽不了&#xff0c;以及…

深入探索Go语言:hash/maphash实战应用与优化技巧

深入探索Go语言&#xff1a;hash/maphash实战应用与优化技巧 引言基础概念哈希函数简介Go中的哈希处理maphash的位置和结构关键特性 maphash的基本用法创建和使用Hash对象maphash.Hash的关键方法使用场景 maphash的高级技巧优化数据结构避免哈希碰撞实现自定义哈希函数 maphash…

使用 XCTU 进行 XBee 无线 (OTA) 固件更新

通过 X-CTU 无线 (OTA) 更新固件&#xff1a; 1. 将XBee加载到 XCTU。将此XBee模块AP参数设置为 API 模式 1 (AP1) 和波特率 115200 (BD7) 以加快进一步的步骤。 2. 在无线模块列表中&#xff0c;选择“发现无线模块”按钮。 3. XCTU 将执行网络发现。然后&#xff0c;您…

Open-Sora环境搭建推理测试

引子 Sora&#xff0c;2024年2月15日&#xff0c;OpenAI发布的人工智能文生视频大模型。支持60秒视频生成&#xff0c;震荡了国内国际学术圈、广告圈、AI教培圈。Sora最主要有三个优点&#xff1a;第一&#xff0c;“60s超长视频”&#xff0c;之前文本生成视频大模型一直无法真…

校园局域网钓鱼实例

Hello &#xff01; 我是"我是小恒不会java" 本文仅作为针对普通同学眼中的网络安全&#xff0c;设计的钓鱼案例也是怎么简陋怎么来 注&#xff1a;本文不会外传代码&#xff0c;后端已停止使用&#xff0c;仅作为学习使用 基本原理 内网主机扫描DNS劫持前端模拟后端…

篮球竞赛预约平台的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)篮球馆,篮球赛,竞赛项目,赛事预约

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…