HarmonyOS 鸿蒙Next 浏览器页面跳app

HarmonyOS 鸿蒙Next 浏览器页面跳app

浏览器加载一个分享链接,这个链接页面有个按钮,点击可以跳转app,之前安卓用的scheml技术,现在鸿蒙使用什么技术唤起鸿蒙应用? 

2 回复
<!DOCTYPE html>浏览器支持Deeplink链接的打开能力。应用想要响应Deeplink拉起,需要注册viewData action和scheme+host,这样才能匹配到。如果有多个应用注册了相同的scheme+host,就会拉起应用选择框,让用户选择某个应用。

Deeplink响应的声明,需要在module.json5文件的接收Ability中skills项中增加action和uris内容:

"skills": [

{

  ...

  "actions": [

  "ohos.want.action.viewData" // 声明Deeplink接收的Action,这个是固定的

  ...

  ],

  "uris": [

  {

    "scheme": "store",  // scheme尽量做到唯一 ,仅设置此协议头就可以跳转

  "host": "test.xxx.com" // host不与其他应用相同,这样可以减少冲突

  }

  ...

  ]

  ...

}

]

需要注意deeplink链接的scheme协议头必须网页拉起的链接的应用配置的保持一致。

另外浏览器不会对deeplink链接做任何解析或处理,只会原封不动的传递给拉起的应用。因此第三方应用只需要自己的网页端和应用端协商好url规则,自己去做解析打开对应页面即可。

webviewDeeplink拉起应用示例:

import web_webview from '@ohos.web.webview';

import { common, Want } from '@kit.AbilityKit';

@Entry
@Component
struct WebPage {
  controller: web_webview.WebviewController = new web_webview.WebviewController()

  build() {

    Row() {

      Column() {

        Web({ src: $rawfile('local.html'), controller: this.controller })

          .onLoadIntercept((event) => {

            if (event) {

              let url: string = event.data.getRequestUrl();

              console.log(url)

              // 判断链接是否为拨号链接

              if (url.indexOf('store://') === 0) {

                // 跳转拨号界面

                const want: Want = {

                  uri: 'store:xxxx'

                }

                const context = getContext(this) as common.UIAbilityContext;

                context.startAbility(want).then(() => {

                  //拉起成功

                }).catch(() => {

                })

                return true;

              }

            }

            return false;

          })

          .domStorageAccess(true)

      }

      .width('100%')

    }

    .height('100%')

  }
}
 <!DOCTYPE html>

<html>
<head>
<meta charset="utf-8">
<title>测试页面</title>
<script>
function goToLink() {
window.open('store://xxxx')
}
</script>
</head>
<body>
<div align="center">
<button type="button" id="btn_navi" onclick="goToLink()">跳转应用市场</button>
</div>
</body>
</html>

更多关于HarmonyOS 鸿蒙Next 浏览器页面跳app的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,实现浏览器页面跳转到App的功能,主要依赖于系统提供的URL Scheme机制或Intent机制(根据鸿蒙的具体API设计,这里不直接涉及Java或C语言实现细节)。

  1. URL Scheme机制

    • 首先,需要在目标App中定义一个自定义的URL Scheme。
    • 然后,在浏览器页面中,通过构造包含该URL Scheme的链接并触发点击事件,即可实现页面向App的跳转。
    • 鸿蒙系统会根据URL Scheme查找并启动相应的App。
  2. Intent机制(如果鸿蒙系统支持类似Android的Intent概念):

    • 目标App需要声明可接收的Intent Filter。
    • 浏览器页面通过某种方式(可能是系统提供的API或第三方库)构造并发送一个Intent。
    • 鸿蒙系统会解析Intent,并根据Filter匹配到目标App,从而启动它。

注意,实现这一功能需要确保目标App已安装且URL Scheme或Intent Filter正确配置。同时,由于不同版本的鸿蒙系统可能存在API差异,开发者需参考最新的鸿蒙开发文档进行实现。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部