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

HarmonyOS —— UIAbility 页面跳转总结

HarmonyOS —— UIAbility 页面跳转总结

Author:Gorit

Date:2023年12月27日

一、系统环境

  1. HarmonOS API9
  2. SDK 3.1.0
  3. Stage 模型

二、应用内跳转

在应用内之前实现不同 page 的跳转,我们使用 router 即可,页面跳转主要支持如下两个方法:

  • router.pushUrl():目标页不会替换当前页,而是压入页面栈。这样可以保留当前页的状态,并且可以通过返回键或者调用router.back()方法返回到当前页。
  • router.replaceUrl():目标页会替换当前页,并销毁当前页。这样可以释放当前页的资源,并且无法返回到当前页。

router 跳转模式

  • Standard:标准实例模式,也是默认情况下的实例模式。每次调用该方法都会新建一个目标页,并压入栈顶。
  • Single:单实例模式。即如果目标页的url在页面栈中已经存在同url页面,则离栈顶最近的同url页面会被移动到栈顶,并重新加载;如果目标页的url在页面栈中不存在同url页面,则按照标准模式跳转。

具体的使用案例 及 应用场景可以查看 官方文档,我这里就不做多余赘述

PS:在卡 ArkTS 卡片中可采用 postCardAction 实现 的跳转

三、UIAbility 之间跳转

原理:基于 startAbility 实现页面跳转,主要应用场景如下

  1. 打开当前 App
  2. 选择多个 App,选择打开某一个 App
  3. 打开指定 App

3.1 了解什么是 UIAbility?

概述:

UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。

UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例,都对应于一个最近任务列表中的任务。

更多的 UIAbility 的信息需要大家自行查阅文档~,比如 生命周期,启动方式等等

3.2 如何启动其它应用 UIAbility?

  1. 获取 UIAbility 上下文信息
    通过文档得知,我们可以在 EntryAbility 中直接获取当前实例的上下文,也可以自己在任意 Page 中去获取 UIAbility 的实例信息
  2. 定义 Want 参数配置,这里东西有很多,我们进需要关注两个配置参数即可 (bundleName 和 abilityName)
  3. 调用 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);})}
PS:如果你是模拟器用户,需要记得在被跳转的 UIAbility 中 `module.json5` 下 `exported: true` 下面添加一个配置 `visible: true`,不然得话程序会崩溃,暂时还没找到其他替代方案。 真机需要使用后才清楚

完整的文档可以参考:UIAbility组件相互交互

这里有很多跳转方式,我简单总结下

  1. 一个应用内有两个 UIAbility,可以采用此方法启动应用内的 UIAbility
  2. 同上,并获取返回结果
  3. 启动其它应用的 UIAbility,这里又分为 显示 Want 启动隐示 Want 启动,我们前面第二点提到的就是 显示 Want 启动,可以理解为精准匹配某一个 APP
  4. 同上,可以修改 Want 参数 和 module.json5 参数,进行模糊匹配,选择多个 UIAbility 可以打开
  5. Call 实现 UIAbility 交互,但是仅支持 系统应用

3.3 跳转系统应用

  1. 系统应用——拉起系统相册
  2. 拉起系统设置及二级页面

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."

五、相关文档

  1. Stage模型应用组件 —— 配置
  2. 应用上下文Context
  3. codelabs 下载通知案例 —— want 应用
  4. 其它 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&#xff1a; 会出现图片无法显示的问题&#xff0c;可以用以下方法来过滤处理 <rich-text :nodes"question.title | formatRichHtml"></rich-text> formatRichHtml(html) {if (!html) {return html;}//控制小程序…...

flink内存配置

flink内存配置 配置 TaskManager 内存 | Apache Flink...

easyexcel 导出

在使用EasyExcel库进行数据写入时&#xff0c;通常我们会使用实体类来存储数据。但是当遇到动态查询&#xff0c;无法确定属性数量和名称时&#xff0c;就需要使用Map来接收数据。然而&#xff0c;直接将Map中的数据写入Excel表格并不是一件简单的事情。接下来&#xff0c;我将…...

maven命令行安装依赖测试

mvn dependency:get -DgroupIdorg.springframework -DartifactIdspring-core -Dversion5.3.9作用&#xff1a;可用于测试配置环境变量后&#xff0c;能否下载依赖到本地仓库...

Redis 笔记

文章目录 安装 & 启动杂乱String字符串 key-valueList 有序重复列表Set 无序不重复列表SortedSet 有序集合Hash 哈希Stream 轻量级消息队列订阅模式 学习地址&#xff1a;https://www.bilibili.com/video/BV1Jj411D7oG/ 安装 & 启动 安装包地址&#xff1a; https://g…...

可穿戴智能设备应用领域以及使用意义分别有哪些?

可穿戴智能设备有哪些&#xff1f; 可穿戴智能设备是指可以佩戴在身上&#xff0c;具有智能功能和交互能力的电子设备。以下是一些常见的可穿戴智能设备&#xff1a; 智能手表&#xff1a;智能手表结合了传统手表的功能和智能设备的特性&#xff0c;可以显示时间、接收通知、监…...

【Linux操作系统】探秘Linux奥秘:文件系统的管理与使用

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS &…...

机器学习——主成分分析(PCA)

主成分分析&#xff08;Principal Component Analysis&#xff0c;简称PCA&#xff09;是一种常用的无监督学习算法&#xff0c;用于降维和数据可视化。主要目标是将高维数据转换成低维空间&#xff0c;同时尽可能保留原始数据的信息。 PCA的主要思想是通过线性变换将原始数据…...

论最近热门的AI绘画技术—从小白绘画到文创手账设计【文末送书-13】

文章目录 &#x1f3c0;前言⚽AI绘图技术栈⚾️简单的代码实现案例&#x1f3c8;iPad萌系简笔画&#xff1a;从小白绘画到文创手账设计【文末送书-13】⛳粉丝福利&#xff1a;文末推荐与福利免费包邮送书&#xff01; &#x1f3c0;前言 AI绘画技术&#xff0c;也称为人工智能…...

python打开文件的方式比较

open(addr,w) 打开之后文件无论以前有什么&#xff0c;打开后都要清空 /// open(addr,r) 文件打开后&#xff0c;不删除以前内容...

使用Jenkins和单个模板部署多个Kubernetes组件

前言 在持续集成和部署中&#xff0c;我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本&#xff0c;我们可以自动化这个过程。在本文中&#xff0c;我将演示如何使用Jenkins Pipeline及单个YAML模板文件&#xff08;.tpl&#xff09;来部署多个类似的…...

Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮

文章目录 &#x1f4d5;教程说明&#x1f4d5;给玩家配置 HandPokeInteractor&#x1f4d5;用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 &#x1f4d5;模仿官方样例按钮的样式&#x1f4d5;在按钮上添加文字&#x1f4d5;修改按钮图片 …...

Vue 3 中安装并使用 Axios 详细步骤+样例代码详解

axios详细步骤 在集成终端打开&#xff0c;使用 npm 或 yarn 安装 Axios&#xff1a; npm install axios或 yarn add axios这将在您的项目中安装 Axios。 在您的 Vue 3 项目中创建一个用于发送 HTTP 请求的模块或文件&#xff0c;比如 http.js。 在 http.js 文件中导入 Axios…...

IDEA 控制台中文出现乱码问题解决

一、问题概述 请看下图 二、问题分析 IDEA控制台输出乱码一般会有三种来源&#xff1a; ① IDEA本身编码错误 ② Tomcat日志输出编码错误 ③ 项目本身原因。 终极原因&#xff1a;IDEA编码和Tomcat编码不一致&#xff0c;统一设置为UTF-8即可。 三、解决思路 修改…...

计算机网络(1)

计算机网络&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;1&#xff09;因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络…...

如果我想用python自动操作手机、电脑软件,应该学python哪方面的知识呢?

Python 作为一门万能语言&#xff0c;在各方面的表现都非常好 如果我们想使用 Python 来操作手机和电脑&#xff0c;那么需要学习掌握如下几个方面的知识 1. 基本的Python编程 显而易见&#xff0c;你需要学习Python的基本语法、数据类型、控制流和函数等基本概念。这是后面…...

关于java命令行传参

关于java命令行传参 本篇文章拓展以下java中的命令行传参&#x1f60e; 有时候你希望运行一个程序的时候再传递给它消息&#xff0c;这要靠传递命令行参数给main()方法来实现。首先我们先来创建一个数组遍历。 public class Demo {public static void main(String[] args){/…...

[LeetCode][Python]389. 找不同

简单 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t 由字符串 s 随机重排&#xff0c;然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1&#xff1a; 输入&#xff1a;s "abcd", t "abcde" 输出&#xff1a;"…...

鸿蒙崛起:互联网大厂加速鸿蒙原生应用开发,人才争夺战打响

随着华为鸿蒙系统的发布和不断推进&#xff0c;一场以鸿蒙为中心的生态竞争已经拉开帷幕。近日&#xff0c;网易、美团等多家互联网公司发布了与鸿蒙系统有关的岗位招聘&#xff0c;加速推进鸿蒙原生应用开发转型。这种趋势表明&#xff0c;鸿蒙系统已经引起了行业的广泛关注&a…...

OR-NeRF论文笔记

OR-NeRF论文笔记 文章目录 OR-NeRF论文笔记论文概述Abstract1 Introduction2 Related Work3 Background4 Method4.1 Multiview Segmentation4.2 Scene Object Removal 5 ExperimentsDatasetsMetricsMultiview SegmentationScene Object Removal 6 Conclusion 论文概述 目的&am…...

【web】vue 播放后端(flask)发送的 mp3 文件

文章目录 演示后端&#xff08;flask&#xff09;前端&#xff08;vue3&#xff09;重要说明 演示 后端&#xff08;flask&#xff09; 后端返回的是 mp3 文件的 url&#xff0c;是可以直接在浏览器上打开后播放的处理跨域请求pip install flask-cors后端代码from flask impor…...

vmware安装openEuler 22.03 LTS操作系统

vmware安装openEuler 22.03 LTS操作系统 1、下载openEuler操作系统镜像文件2、安装openEuler操作系统3、配置openEuler操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载openEuler操作系统镜像文件 官网下载链接 链接: https://www.openeuler.or…...

Android registerForActivityResult

startActivityForResult 已经被标记为不推荐的方法&#xff0c;推荐的替代方案是使用 registerForActivityResult&#xff1a; // Activity 的 onCreate 方法中调用 registerForActivityResult val activityResultLauncher registerForActivityResult(ActivityResultContract…...

【CSS】布局方式梳理和总结

1. 前言 网页布局是CSS的重点功能&#xff0c;布局的传统方案是基于盒子模型&#xff0c;依靠display属性、position属性和float属性&#xff0c;它对一些特殊布局很麻烦。 CSS3推出的Flex布局和网格布局&#xff0c;让开发者更容易定制自己想要的布局。本篇梳理和总结一些布局…...

PHP计算某时间段内有几个周及某时间为今年第几周函数

date_default_timezone_set(PRC); function count_weeks($startDate, $endDate ){//开始时间$startDate date(Y-m-d, $startDate);//结束时间if(empty($endDate)) {$endDate date(Y-m-d);}else{$endDate date(Y-m-d, $endDate);}//跨越天数$n (strtotime($endDate)-strtot…...

华为无线AC内三层漫游配置详解

重要说明 1、在一台ac中实现三层漫游 2、ac和核心的互联vlan和ap的管理vlan是同一个广播域&#xff0c;可以不用配option 43 3、直接转发模式&#xff0c;ac上可以不起业务vlan&#xff0c;ac和核心交换机上可以只放行一个互联vlan 10 4、ac上要启两个vap魔板&#xff0c;两个…...

不注册公司可以做网站吗/互联网推广是做什么的

何为虚拟DOM虚拟DOM就是普通的js对象&#xff0c;其可以用来描述DOM对象&#xff0c;但是由于不是真正的DOM对象&#xff0c;因此人们把它叫做虚拟DOM。为何出现虚拟DOM手动处理DOM在早期的js应用中&#xff0c;开发人员需要手动处理DOM&#xff0c;手动处理不仅代码繁琐&#…...

网络博彩网站怎么做的/网络营销教学大纲

前面说到微软打算在 Win12 出来前搞出个模块化的Windows&#xff1a;下一个系统不是Win12&#xff0c;微软要复活Win10X。 模块化不用小蝾再过多介绍了&#xff0c;就像积木一样拼在一起组成一个整体。 优势就很明显了&#xff0c;由于每个部分都是单独的模块&#xff0c;更新…...

yyf做的搞笑视频网站/网络营销策略分析

Apache与nginx的对比 Apache&#xff1a;select模型&#xff08;类似于同步&#xff09;高并发的时候占用资源较多。 Nginx&#xff1a;epoll模型&#xff08;&#xff09;类似于异步&#xff09;&#xff0c;对小文件并发有很大优势&#xff0c;大文件并发上一般&#xff0c;…...

济南网站建设铭盛信息/百度招聘官网首页

我的第一个socket 编程。 首先创建一个server 类&#xff0c; 然后在类中添加四个成员. 初始化。 TcpServer (listenPort) 记得在初始化servAddr 的时候要 先清零. 因为该成员的最后八位是0 。为了方便所以直接清零。 bzero(&servAddr, sizeof(servAddr)); 要记得加 &…...

制作wordpress插件/深圳网络营销和推广渠道

1.安装编译环境 2.上传源码包并解压 3.编译并安装 4.复制配置文件到 /etc目录下 5.开启Redis&#xff0c;默认在前端运行&#xff0c;效果如图 命令&#xff1a;redis-server /etc/redis.conf6.修改配置文件 /etc/redis.conf 以守护进程运行 将daemonize参数修改为yes 将…...

app软件开发公司找用友yonmaker/平台优化是指什么

求递归算法时间复杂度&#xff1a;递归树1.参考资料2.内容1.参考资料 参考网页&#xff1a;求递归算法时间复杂度&#xff1a;递归树 2.内容 递归算法时间复杂度的计算方程式是一个递归方程: T(n){O(1)n1kT(n/m)f(n)n>1T(n) \left\{ \begin{array}{ll} O(1) & n1 \\…...