HarmonyOS的连接艺术之二:精准控制目标应用

news/2024/10/20 13:13:49

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。

在某些场景下,我们希望应用能够精准控制目标应用,例如打开地图应用查看特定地点,或者打开音乐 App 播放特定歌曲。HarmonyOS 提供了多种方式来实现这种类型的跳转,例如 openLink 接口、startAbility 接口和 Web 组件跳转等。

指定应用链接跳转

1. openLink 接口
openLink 接口是最常用的跳转方式,它可以将用户引导到目标应用的特定页面。例如,你可以在购物 App 中点击“查看地图”按钮,然后系统就会自动打开地图 App 并跳转到店铺位置。
openLink 接口参数说明

参数 类型 说明
link string 目标应用的 URL 链接
options object 选项参数,例如 appLinkingOnly、parameters 等
示例代码
import { common } from '@ohos.app.ability.common';
export default class EntryAbility extends common.UIAbility {onWindowStageCreate(windowStage: common.WindowStage) {const context = this.getContext(this) as common.UIAbilityContext;const link: string = "geo:37.7749,-122.4194"; // 地点坐标const options: common.OpenLinkOptions = {appLinkingOnly: false // 允许使用 Deep Linking 跳转};context.openLink(link, options);}
}

2. startAbility 接口
startAbility 接口与 openLink 接口类似,但它提供了更多的选项参数,例如 abilityNamemoduleName 等,可以指定目标应用的 Ability 名称和模块名称。
startAbility 接口参数说明

参数 类型 说明
want common.Want 目标应用的 Want 对象,包含 action、uri、entities、actions、parameters 和 flags 等信息
options object 选项参数,例如 abilityName、moduleName 等
示例代码
import { common } from '@ohos.app.ability.common';
export default class EntryAbility extends common.UIAbility {onWindowStageCreate(windowStage: common.WindowStage) {const context = this.getContext(this) as common.UIAbilityContext;const want: common.Want = {action: 'ohos.want.action.viewData',uri: "geo:37.7749,-122.4194",entities: ["entity.system.browsable"],actions: ["ohos.want.action.viewData"]};context.startAbility(want);}
}

3. Web 组件跳转
Web 组件可以通过拦截 onLoadIntercept 回调来处理 Deep Linking 链接,实现应用跳转。
示例代码

import { webview } from '@ohos.arkweb';
export default class WebComponent {controller: webview.WebviewController = new webview.WebviewController();build() {this.controller.onLoadIntercept((event) => {const url: string = event.data.getRequestUrl();if (url.startsWith("geo:")) {// 跳转到地图应用}return true; // 阻止页面加载});}
}

4. 指定 Ability 跳转 (API 11 及以前版本)
在 API 11 及以前版本,可以使用显式 Want 拉起其他应用,但这种方式在 API 12 及以上版本已不再支持。
示例代码

import { common } from '@ohos.app.ability.common';
export default class EntryAbility extends common.UIAbility {onWindowStageCreate(windowStage: common.WindowStage) {const context = this.getContext(this) as common.UIAbilityContext;const want: common.Want = {bundleName: "com.example.demo",moduleName: "entry",abilityName: "EntryAbility"};context.startAbility(want);}
}

举(N)个栗子

示例 1:使用 openLink 接口打开浏览器

import { common } from '@ohos.app.ability.common';
export default class EntryAbility extends common.UIAbility {onWindowStageCreate(windowStage: common.WindowStage) {const context = this.getContext(this) as common.UIAbilityContext;const link: string = "https://www.example.com";const options: common.OpenLinkOptions = {appLinkingOnly: false // 允许使用 Deep Linking 跳转};context.openLink(link, options);}
}

示例 2:使用 startAbility 接口打开计算器应用

import { common } from '@ohos.app.ability.common';
export default class EntryAbility extends common.UIAbility {onWindowStageCreate(windowStage: common.WindowStage) {const context = this.getContext(this) as common.UIAbilityContext;const want: common.Want = {action: 'ohos.want.action.viewData',uri: "calculator",entities: ["entity.system.browsable"],actions: ["ohos.want.action.viewData"]};context.startAbility(want);}
}

示例 3:使用 Web 组件打开天气应用

import { webview } from '@ohos.arkweb';
export default class WebComponent {controller: webview.WebviewController = new webview.WebviewController();build() {this.controller.onLoadIntercept((event) => {const url: string = event.data.getRequestUrl();if (url.startsWith("weather:")) {// 跳转到天气应用}return true; // 阻止页面加载});}
}

总结
拉起指定应用是应用间跳转的重要方式,它能够精准控制目标应用,实现特定的功能,实际开发中可以根据实际需求选择合适的跳转方式。

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

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

相关文章

PbootCMS修改后台登录账号和密码

登录后台:使用当前的管理员账号和密码登录后台管理页面。修改密码:登录后,在右上角点击用户头像或用户名,通常会有一个下拉菜单。 选择“修改密码”或类似的选项。 在弹出的页面中,输入当前密码和新密码,然后保存。修改账号(可选):如果需要修改管理员账号,通常需要在…

pbootcms如何修改后台的登陆地址/账号以及密码呢?

修改后台登录地址 步骤备份文件:在进行任何修改前,请先备份 admin.php 文件,以防止意外情况发生。 备份命令示例(Linux):bashcp /path/to/your/project/admin.php /path/to/your/project/admin.php.bak重命名 admin.php 文件:将 admin.php 文件重命名为其他名称,例如 X…

PbootCMS安装后,默认的后台用户名和密码是多少,怎么登陆?

1. 默认后台路径路径: http://您的域名/admin.php例如,如果你的域名是 example.com,则后台路径为 http://example.com/admin.php2. 默认用户名和密码用户名: admin 密码: 1234563. 登录步骤打开浏览器:使用你喜欢的浏览器,如 Chrome、Firefox 等。输入后台路径:在浏览器地…

PBOOTCMS后台出现 登入失败:表单提交校验失败,刷新后重试

根据你的描述,问题可能是由于缓存文件导致的。以下是详细的解决步骤和解释: 1. 问题现象错误信息: “登入失败:表单提交校验失败,刷新后重试” 背景: 前一天还正常,程序无被黑痕迹,数据库账号密码正常,服务器环境未更改。2. 解决步骤删除 runtime 文件夹:路径: 根目录下的…

随意门导航zlibrary入口网站,如何获取

随意门导航 随意门导航是一个功能强大且内容丰富的网址导航网站。它为用户提供了便捷的互联网入口,集合了众多热门网站和实用工具,包括电子书下载、学术资源、生活工具、常用查询以及音乐在线听等多个板块。用户只需一键点击,即可快速访问所需资源,无需再费心搜索。随意门导…

团队作业1——团队展示

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 作业要求这个作业的目标 团队介绍、成员展示、角色分配、选题确定一、团队展示 队名: 团队成员:姓名 学号木萨江米吉提 3122004960巴音才次克 3222004974李佳聪 3222004509杨睿 31220047551.木萨江米吉提:会基本的C、H…

IDEA社区版如何用tomcat运行war包

前言 我们在使用IDEA开发Java应用时,有时候需要运行的不是jar包,而是war包,但IDEA社区版默认是不支持tomcat容器的,无法直接运行war包。不过好在我们有一个强大的插件来支持我们使用tomcat,那么,我们应该如何操作呢? 如何配置smart tomcat 首先,我们打开设置面板。然后…

每天5分钟玩转C#/.NET之C#语言详细介绍

C#语言介绍C# 语言是适用于 .NET 平台(免费的跨平台开源开发环境)的最流行语言。C# 程序可以在许多不同的设备上运行,从物联网 (IoT) 设备到云以及介于两者之间的任何设备。可为手机、台式机、笔记本电脑和服务器编写应用。 C# 是一种跨平台的通用语言,可以让开发人员在编写…