HarmonyOS 鸿蒙Next通过openLink拉起浏览器打开链接

HarmonyOS 鸿蒙Next通过openLink拉起浏览器打开链接 本文介绍了在HarmonyOS应用开发过程中,如何使用openLink拉起浏览器来打开链接。

App Linking Kit简介

HarmonyOS的App Linking Kit(应用链接服务)提供了一系列增强的链接特性。App Linking Kit支持通过基础链接拉起指定应用,实现应用间跳转。当应用已安装时,优先通过应用展示内容;若应用未安装,则通过系统浏览器展示网页版内容。

使用App Linking进行跳转时,系统会根据接口传入的uri信息(HTTPS链接)将用户引导至目标应用中的特定内容,无论应用是否已安装,用户都可以访问到链接对应的内容,跳转体验相比Deep Linking方式更加顺畅。

拉起方应用跳转实现

拉起方应用通过UIAbilityContext.openLink()接口,传入目标应用的链接,拉起目标应用。

openLink接口提供了两种拉起目标应用的方式,开发者可根据业务需求进行选择。

方式一: 仅以App Linking的方式打开应用。

将appLinkingOnly参数设为true,若有App Linking匹配的应用,则直接打开目标应用。若无App Linking匹配的应用,则抛异常给开发者进行处理。

适用于无法打开目标应用时,开发者做了相应的异常处理。例如:拉起方应用集成了ArkWeb,当目标应用不存在时,可通过ArkWeb打开链接。

方式二: 以App Linking优先的方式打开应用。

将appLinkingOnly参数设为false或者不传,若有App Linking匹配的应用,则直接打开目标应用。若无App Linking匹配的应用,则尝试以浏览器打开链接的方式打开应用。

适用于无法打开目标应用时,开发者未做任何处理。此时目标应用不存在时,会通过系统浏览器打开链接。

代码示例

本文主要验证上述方式二,核心代码逻辑如下。

// 获取上下文
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
let link: string = this.url;
let openLinkOptions: OpenLinkOptions = {
  // 将appLinkingOnly参数设为false或者不传,
  // 若有App Linking匹配的应用,则直接打开目标应用。
  // 若无App Linking匹配的应用,则尝试以浏览器打开链接的方式打开应用
  appLinkingOnly: false,
  parameters: {}
};

try {
  context.openLink(
    link,
    openLinkOptions,
    (err, result) => {
      hilog.error(DOMAIN, TAG, `openLink callback error.code: ${JSON.stringify(err)}`);
      hilog.info(DOMAIN, TAG, `openLink callback result: ${JSON.stringify(result.resultCode)}`);
      hilog.info(DOMAIN, TAG, `openLink callback result data: ${JSON.stringify(result.want)}`);
    }
  ).then(() => {
    hilog.info(DOMAIN, TAG, `open link success.`);
  }).catch((err: BusinessError) => {
    hilog.error(DOMAIN, TAG, `open link failed, errCode ${JSON.stringify(err.code)}`);
  });
} catch (e) {
  hilog.error(DOMAIN, TAG, `exception occured, errCode ${JSON.stringify(e.code)}`);
}

运行应用,界面效果如下。

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/042/413/002/0000000000042413002.20251105150050.49223817199998318588200831823567:50001231000000:2800:C2D8EF0826E684F6A25A4A81EB1177BC5C1EBD8B5F9DB58742B5A2CC105ABD03.jpg

点击应用“访问链接”,可以看到拉起了浏览器,界面效果如下。

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/042/413/002/0000000000042413002.20251105150056.47244231672898902329567580323886:50001231000000:2800:44C149FF3219B72742E1E3F845C4D09359396065BFC1C3234DDDCA5337FC060C.jpg

在浏览器里面访问被访问的应用,界面效果如下。

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/042/413/002/0000000000042413002.20251105150102.06083198044298671203611487153695:50001231000000:2800:4F51DE1F98E3F5B264E23E79B29996420051371BAF7A747130FA6D79BDFCBF42.jpg

完整示例详见文末链接《跟老卫学仓颉编程语言开发》中“ArkTSOpenLink”。

参考引用

加入鸿蒙生态,共建万物互联。以下是鸿蒙应用开发常用教程。


更多关于HarmonyOS 鸿蒙Next通过openLink拉起浏览器打开链接的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

更多关于HarmonyOS 鸿蒙Next通过openLink拉起浏览器打开链接的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


多谢支持!

HarmonyOS Next中可通过openLink接口拉起系统默认浏览器打开链接。该接口属于@ohos.window模块,调用方式为window.openLink(url: string),传入有效URL参数即可触发浏览器启动并加载目标页面。系统会自动处理应用间跳转和浏览器进程管理,无需额外配置浏览器参数。该接口仅支持http/https协议链接,若需自定义浏览器行为需使用其他窗口管理接口。

感谢分享这篇关于在HarmonyOS Next中使用openLink拉起浏览器打开链接的详细教程。您对App Linking Kit的两种使用方式(appLinkingOnly设为true或false)的解释很清晰,代码示例也很完整。

在实际开发中,这种方式确实能够提供更好的用户体验,特别是当目标应用未安装时,系统能够自动降级到浏览器打开网页内容,避免了链接失效的问题。您的异常处理代码也展示了良好的开发实践。

这种方式相比传统的Deep Linking确实更加灵活,开发者可以根据具体业务需求选择是否强制使用App Linking,或者允许浏览器作为备选方案。这对于提升应用间的跳转成功率很有帮助。

回到顶部