🔗 HarmonyOS应用间无缝协作:跳转技术全解析
一、两种核心跳转方式
1. 精准直达:拉起指定应用
- 场景:购物APP点击「查看地图」直接打开地图APP
- 特点:目标明确,无需用户选择
- 实现:通过
openLink或startAbility接口
2. 类型选择:拉起指定类型应用
- 场景:点击「转账」弹出所有银行APP列表
- 特点:系统展示同类型应用,用户自主选择
- 实现:通过
startAbility结合类型匹配
二、应用链接:跨应用的「数字桥梁」
运作三步骤
-
目标应用注册URL skill
在config.json中声明支持的URL规则:{ "skills": [ { "request": { "uri": { "scheme": "myapp", "host": "shop", "path": "/location" } } } ] } -
发起方构建链接
按目标规则生成URI:myapp://shop/location?address=xxx -
系统匹配跳转
系统根据scheme/host/path找到对应应用
三、Deep Linking vs App Linking
| 特性 | Deep Linking | App Linking |
|---|---|---|
| 协议 | 自定义scheme | 标准https |
| 域名校验 | 无 | 强制校验域名合法性 |
| 未安装处理 | 返回错误码 | 跳转浏览器打开链接 |
| 安全性 | 较低 | 较高(HTTPS加密) |
四、实战代码示例
1. 拉起地图应用(经纬度跳转)
import { common } from '@ohos.app.ability.common';
// 拉起地图显示指定坐标
context.openLink('geo:39.9042,116.4074'); // 北京天安门坐标
2. 调用邮件应用(带参数跳转)
const want: common.Want = {
action: 'ohos.want.action.sendToData',
uri: 'mailto:support@harmony.com?subject=反馈&body=问题描述',
flags: 3 // 读写权限标志
};
context.startAbility(want);
3. 应用内Deep Link处理
// 接收方处理URI参数
onCreate(want) {
const uri = want.uri;
if (uri) {
const path = url.URL.parseURL(uri).path;
if (path === '/product/123') {
loadProductDetail(123);
}
}
}
五、开发最佳实践
-
未安装处理
- 跳转前检查应用是否安装:
common.getAbilityInfo({ bundleName: 'com.map.app' })
- 跳转前检查应用是否安装:
-
参数安全
- App Linking使用HTTPS协议传输敏感参数
- Deep Linking避免在URI中携带密码等信息
-
用户体验
- 类型跳转时提供清晰的应用列表说明
- 跳转前给出明确的操作提示
总结
HarmonyOS的应用跳转机制通过精准匹配与安全校验,实现了跨应用的无缝协作。开发者可根据场景选择Deep Linking或App Linking,结合openLink/startAbility接口,为用户打造流畅的多应用交互体验。
浙公网安备 33010602011771号