HarmonyOS —— UIAbility 页面跳转总结
HarmonyOS —— UIAbility 页面跳转总结
Author:Gorit
Date:2023年12月27日
一、系统环境
- HarmonOS API9
- SDK 3.1.0
- Stage 模型
二、应用内跳转
在应用内之前实现不同 page 的跳转,我们使用 router 即可,页面跳转主要支持如下两个方法:
- router.pushUrl():目标页不会替换当前页,而是压入页面栈。这样可以保留当前页的状态,并且可以通过返回键或者调用router.back()方法返回到当前页。
- router.replaceUrl():目标页会替换当前页,并销毁当前页。这样可以释放当前页的资源,并且无法返回到当前页。
router 跳转模式
- Standard:标准实例模式,也是默认情况下的实例模式。每次调用该方法都会新建一个目标页,并压入栈顶。
- Single:单实例模式。即如果目标页的url在页面栈中已经存在同url页面,则离栈顶最近的同url页面会被移动到栈顶,并重新加载;如果目标页的url在页面栈中不存在同url页面,则按照标准模式跳转。
具体的使用案例 及 应用场景可以查看 官方文档,我这里就不做多余赘述
PS:在卡 ArkTS 卡片中可采用 postCardAction 实现 的跳转
三、UIAbility 之间跳转
原理:基于 startAbility 实现页面跳转,主要应用场景如下
- 打开当前 App
- 选择多个 App,选择打开某一个 App
- 打开指定 App
3.1 了解什么是 UIAbility?
概述:
UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。
UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例,都对应于一个最近任务列表中的任务。
更多的 UIAbility 的信息需要大家自行查阅文档~,比如 生命周期,启动方式等等
3.2 如何启动其它应用 UIAbility?
- 获取 UIAbility 上下文信息
通过文档得知,我们可以在EntryAbility中直接获取当前实例的上下文,也可以自己在任意 Page 中去获取 UIAbility 的实例信息 - 定义 Want 参数配置,这里东西有很多,我们进需要关注两个配置参数即可 (bundleName 和 abilityName)
- 调用
context.startAbility(want).then(...)实现调用其他 UIAbility
转换成代码如下:
import common from '@ohos.app.ability.common'// 业务代码 ...
{Button().onClick(() => {startSettingsMainAbilityExplicit()})}function startSettingsMainAbilityExplicit() {console.log("begin to navigate");let context = getContext(this) as unknown as common.UIAbilityContext;let want = {deviceId: "",bundleName: 'com.examples', // com.ohos.settingsabilityName: 'EntryAbility', // com.ohos.settings};// previewer 无法调用context.startAbility(want).then((res) => {console.log(res + "");}).catch((e) => {console.log(e.code, e.message);})}
完整的文档可以参考:UIAbility组件相互交互
这里有很多跳转方式,我简单总结下
- 一个应用内有两个 UIAbility,可以采用此方法启动应用内的 UIAbility
- 同上,并获取返回结果
- 启动其它应用的 UIAbility,这里又分为
显示 Want 启动和隐示 Want 启动,我们前面第二点提到的就是 显示 Want 启动,可以理解为精准匹配某一个 APP - 同上,可以修改 Want 参数 和 module.json5 参数,进行模糊匹配,选择多个 UIAbility 可以打开
- Call 实现 UIAbility 交互,但是仅支持 系统应用
3.3 跳转系统应用
- 系统应用——拉起系统相册
- 拉起系统设置及二级页面
let want = {"deviceId": "","bundleName": "","abilityName": "","uri": "","flags":wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,"action": "android.settings.SETTINGS","parameters": {},"entities": []
}
this.context.startAbility(want, (err) => {if (err.code) {// 处理业务逻辑错误console.log('startAbility failed, error.code: ' + JSON.stringify(err.code) +' error.message: ' + JSON.stringify(err.message));return;}
// 正常逻辑
})
系统设置 action 配置
系统设置常见子页面(在当前 HarmonOS 3.1 版本,4.0 版本可以使用,NEXT 版本是否支持有待考证)
Action名称 作用
android.settings.SETTINGS 跳转到设置界面
android.settings.ACCESSIBILITY_SETTINGS 跳转系统的辅助功能界面
android.settings.ADD_ACCOUNT_SETTINGS 显示添加帐户创建一个新的帐户屏幕。【测试跳转到微信登录界面】
android.settings.AIRPLANE_MODE_SETTINGS 飞行模式,无线网和网络设置界面
android.settings.WIRELESS_SETTINGS 飞行模式,无线网和网络设置界面
android.settings.APN_SETTINGS 跳转 APN设置界面
android.settings.APPLICATION_DETAILS_SETTINGS 根据包名跳转到系统自带的应用程序信息界面
android.settings.APPLICATION_DEVELOPMENT_SETTINGS 跳转开发人员选项界面
android.settings.APPLICATION_SETTINGS 跳转应用程序列表界面
android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS 跳转到应用程序界面【所有的】
android.settings.MANAGE_APPLICATIONS_SETTINGS 跳转 应用程序列表界面【已安装的】
android.settings.BLUETOOTH_SETTINGS 跳转系统的蓝牙设置界面
android.settings.DATA_ROAMING_SETTINGS 跳转到移动网络设置界面
android.settings.DATE_SETTINGS 跳转日期时间设置界面
android.settings.DEVICE_INFO_SETTINGS 跳转手机状态界面
android.settings.DISPLAY_SETTINGS 跳转手机显示界面
android.settings.INPUT_METHOD_SETTINGS 跳转语言和输入设备
android.settings.INPUT_METHOD_SUBTYPE_SETTINGS 【API 11及以上】 // 跳转 语言选择界面 【多国语言选择】
android.settings.INTERNAL_STORAGE_SETTINGS 跳转存储设置界面【内部存储】
android.settings.MEMORY_CARD_SETTINGS 跳转 存储设置 【记忆卡存储】
android.settings.LOCALE_SETTINGS 跳转语言选择界面【仅有English 和 中文两种选择】
android.settings.LOCATION_SOURCE_SETTINGS 跳转位置服务界面【管理已安装的应用程序。】
android.settings.NETWORK_OPERATOR_SETTINGS 跳转到 显示设置选择网络运营商。
android.settings.NFCSHARING_SETTINGS 显示NFC共享设置。 【API 14及以上】
android.settings.NFC_SETTINGS 显示NFC设置。这显示了用户界面,允许NFC打开或关闭。 【API 16及以上】
android.settings.PRIVACY_SETTINGS 跳转到备份和重置界面
android.settings.QUICK_LAUNCH_SETTINGS 跳转快速启动设置界面
android.search.action.SEARCH_SETTINGS 跳转到 搜索设置界面
android.settings.SECURITY_SETTINGS 跳转到安全设置界面
android.settings.SOUND_SETTINGS 跳转到声音设置界面
android.settings.SYNC_SETTINGS 跳转账户同步界面
android.settings.USER_DICTIONARY_SETTINGS 跳转用户字典界面
android.settings.WIFI_IP_SETTINGS 跳转到IP设定界面
android.settings.WIFI_SETTINGS 跳转Wifi列表设置
四、跨设备跳转【TODO】
经过尝试,两个模拟器之间貌似不支持,会提示如下错误
2-27 10:19:19.724 16971-193/com.examples.demo I 0FEFE/JsApp: startAbility failed, error.code: 16000009 error.message: "Cannot operate in wukong mode."
五、相关文档
- Stage模型应用组件 —— 配置
- 应用上下文Context
- codelabs 下载通知案例 —— want 应用
- 其它 HarmonOS 跳转案例
相关文章:
HarmonyOS —— UIAbility 页面跳转总结
HarmonyOS —— UIAbility 页面跳转总结 Author:Gorit Date:2023年12月27日 一、系统环境 HarmonOS API9SDK 3.1.0Stage 模型 二、应用内跳转 在应用内之前实现不同 page 的跳转,我们使用 router 即可,页面跳转主要支持如下…...
Spring Boot 3 集成 Jasypt详解
随着信息安全的日益受到重视,加密敏感数据在应用程序中变得越来越重要。Jasypt(Java Simplified Encryption)作为一个简化Java应用程序中数据加密的工具,为开发者提供了一种便捷而灵活的加密解决方案。本文将深入解析Jasypt的工作…...
Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能
文章目录 1. 简介2. 引入依赖3. 导入功能实现3.1 创建实体类3.2 编写导入 Controller3.3 编写导入页面 4. 导出功能实现4.1 编写导出 Controller4.2 编写导出页面 5. 启动应用 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 &…...
SQLSERVER排查CPU占用高
操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库 现象 他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况 内存占用不太高,只占用了30个G CPU…...
uniapp:富文本回显
一、使用uniapp官方的标签 rich-text: 会出现图片无法显示的问题,可以用以下方法来过滤处理 <rich-text :nodes"question.title | formatRichHtml"></rich-text> formatRichHtml(html) {if (!html) {return html;}//控制小程序…...
flink内存配置
flink内存配置 配置 TaskManager 内存 | Apache Flink...
easyexcel 导出
在使用EasyExcel库进行数据写入时,通常我们会使用实体类来存储数据。但是当遇到动态查询,无法确定属性数量和名称时,就需要使用Map来接收数据。然而,直接将Map中的数据写入Excel表格并不是一件简单的事情。接下来,我将…...
maven命令行安装依赖测试
mvn dependency:get -DgroupIdorg.springframework -DartifactIdspring-core -Dversion5.3.9作用:可用于测试配置环境变量后,能否下载依赖到本地仓库...
Redis 笔记
文章目录 安装 & 启动杂乱String字符串 key-valueList 有序重复列表Set 无序不重复列表SortedSet 有序集合Hash 哈希Stream 轻量级消息队列订阅模式 学习地址:https://www.bilibili.com/video/BV1Jj411D7oG/ 安装 & 启动 安装包地址: https://g…...
可穿戴智能设备应用领域以及使用意义分别有哪些?
可穿戴智能设备有哪些? 可穿戴智能设备是指可以佩戴在身上,具有智能功能和交互能力的电子设备。以下是一些常见的可穿戴智能设备: 智能手表:智能手表结合了传统手表的功能和智能设备的特性,可以显示时间、接收通知、监…...
【Linux操作系统】探秘Linux奥秘:文件系统的管理与使用
🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS &…...
机器学习——主成分分析(PCA)
主成分分析(Principal Component Analysis,简称PCA)是一种常用的无监督学习算法,用于降维和数据可视化。主要目标是将高维数据转换成低维空间,同时尽可能保留原始数据的信息。 PCA的主要思想是通过线性变换将原始数据…...
论最近热门的AI绘画技术—从小白绘画到文创手账设计【文末送书-13】
文章目录 🏀前言⚽AI绘图技术栈⚾️简单的代码实现案例🏈iPad萌系简笔画:从小白绘画到文创手账设计【文末送书-13】⛳粉丝福利:文末推荐与福利免费包邮送书! 🏀前言 AI绘画技术,也称为人工智能…...
python打开文件的方式比较
open(addr,w) 打开之后文件无论以前有什么,打开后都要清空 /// open(addr,r) 文件打开后,不删除以前内容...
使用Jenkins和单个模板部署多个Kubernetes组件
前言 在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个YAML模板文件(.tpl)来部署多个类似的…...
Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮
文章目录 📕教程说明📕给玩家配置 HandPokeInteractor📕用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 📕模仿官方样例按钮的样式📕在按钮上添加文字📕修改按钮图片 …...
Vue 3 中安装并使用 Axios 详细步骤+样例代码详解
axios详细步骤 在集成终端打开,使用 npm 或 yarn 安装 Axios: npm install axios或 yarn add axios这将在您的项目中安装 Axios。 在您的 Vue 3 项目中创建一个用于发送 HTTP 请求的模块或文件,比如 http.js。 在 http.js 文件中导入 Axios…...
IDEA 控制台中文出现乱码问题解决
一、问题概述 请看下图 二、问题分析 IDEA控制台输出乱码一般会有三种来源: ① IDEA本身编码错误 ② Tomcat日志输出编码错误 ③ 项目本身原因。 终极原因:IDEA编码和Tomcat编码不一致,统一设置为UTF-8即可。 三、解决思路 修改…...
计算机网络(1)
计算机网络(1) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网(1)因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏,是自己在计算机网络…...
如果我想用python自动操作手机、电脑软件,应该学python哪方面的知识呢?
Python 作为一门万能语言,在各方面的表现都非常好 如果我们想使用 Python 来操作手机和电脑,那么需要学习掌握如下几个方面的知识 1. 基本的Python编程 显而易见,你需要学习Python的基本语法、数据类型、控制流和函数等基本概念。这是后面…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
