首页 > 其他分享 >HarmonyOS开发之H5页面启动其他应用

HarmonyOS开发之H5页面启动其他应用

时间:2024-08-31 10:25:30浏览次数:5  
标签:xxx hwtips H5 HarmonyOS 应用 error Scheme 页面

场景描述

在 HarmonyOS 的开发中,经常需要在应用或者浏览器的 H5 页面中跳转到另一个应用。为了实现这一目标,本文档将介绍一种通过 URL Scheme(Deep Link)来启动已安装应用或者跳转至应用商店下载未安装应用的方法。

实现步骤

1. 配置 Scheme 查询

首先,在拉起方的 module.json5 文件中配置 querySchemes 字段,表示本应用可能会用到的 Scheme 查询。

"module": {
  "querySchemes": [
    "hwtips",
  ],
}

2. 配置支持的 Scheme 协议

接着,在被拉起方的 module.json5 文件中配置 abilitiesskills 字段,指定支持的 Scheme 协议。

"abilities": [
  {
    "skills": [
      {
        "actions": [
          "ohos.want.action.viewData"
        ],
        "uris": [
          {
            "scheme": "hwtips"
          }
        ]
      }
    ]
  }
]

3. 在 H5 页面中添加按钮及绑定事件

在 H5 页面中添加一个按钮,并绑定点击事件,用于触发 URL Scheme。

<!DOCTYPE html>
<html>
<body>
<div>
    <button type="button" onclick="goToLink()">拉起应用</button>
</div>
</body>
</html>
<script>
    function goToLink() {
        window.open('hwtips://com.huawei.hmos.tips.app?id=xxx&funNum=xxx&type=xxx');
    }
</script>

4. 检测应用是否可打开

使用 bundleManager.canOpenLink 方法检测是否可以打开相关应用。

const bundleManager = bundle.getBundleManager();

let canOpen = bundleManager.canOpenLink('hwtips://com.huawei.hmos.tips.app');

if (canOpen) {
  // 拉起应用
  const want = {
    action: 'ohos.intent.action.VIEW',
    parameters: { id: 'xxx', funNum: 'xxx', type: 'xxx' },
    uri: 'hwtips://com.huawei.hmos.tips.app'
  };
  
  context.startAbility(want).then(() => {
    console.log('应用已成功启动');
  }).catch((error) => {
    console.error('启动应用失败:', error);
  });
} else {
  // 跳转应用市场下载
  const want = {
    action: 'ohos.intent.action.VIEW',
    uri: 'store://appgallery.huawei.com/app/detail?id=C1229502635594278976'
  };

  context.startAbility(want).then(() => {
    console.log('应用市场已成功启动');
  }).catch((error) => {
    console.error('启动应用市场失败:', error);
  });
}

5. URL 解释

  • hwtips://:这是玩机技巧 APP 的协议头,表明这是一个玩机技巧 APP 的链接。
  • com.huawei.hmos.tips.app:玩机技巧 APP 的主域名,表明该链接由玩机技巧 APP 生成。
  • funNum=xxx&type=xxx:链接参数,表示要跳转的具体页面。
  • id=xxx:应用的唯一标识 ID,用于跳转至应用商店下载页面。

6. 使用 onLoadIntercept 截获前端请求

const web = new Web({
  src: 'wanjijiqiao.html',
  controller: this.controller,
});

web.onLoadIntercept((event) => {
  if (event) {
    const url = event.data.getRequestUrl();
    // 进一步处理 URL
  }
});

以上就是如何在 HarmonyOS 中使用 URL Scheme 从 H5 页面启动其他应用的完整流程。这种方法可以提高用户体验,并且为开发者提供了一个简单而强大的跨应用交互手段。

标签:xxx,hwtips,H5,HarmonyOS,应用,error,Scheme,页面
From: https://blog.51cto.com/u_15171169/11880665

相关文章

  • 通过C# 读取PDF页面大小、方向、旋转角度
    在C#中读取PDF文件的页面大小、方向以及旋转角度,可以使用第三方库,因为.NET标准库本身并不直接支持处理PDF文件。最常用的库之一是iTextSharp,它是iText的.NET版本,一个开源的库,用于创建和操作PDF文件。以下是一个使用iTextSharp库来读取PDF页面大小、方向和旋转角度的基本示例:......
  • 鸿蒙开发—黑马云音乐之music页面播放音乐(下)
    目录1.暂停播放和恢复播放2.上一首、下一首功能1.暂停播放和恢复播放src/main/ets/services/AvPlayerManager.ets:exportinterfacesongItemType{img:stringname:stringauthor:stringurl:stringid:string}//作用:负责管理播放对象的各种方法封装......
  • 鸿蒙(HarmonyOS)常见的三种弹窗方式
    最近有一个想法,做一个针对鸿蒙官方API的工具箱项目,介绍常用的控件,以及在项目中如何使用,今天介绍Harmony中如何实现弹窗功能。警告弹窗警告弹窗是一个App中非常常用的弹窗,例如:删除一条记录,提示一下用户:您确定要删除吗?在App首页,点击返回时,提示一下用户:您确定要退出App吗?使用A......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • ios H5页面滚动适配问题
    1.取消页面整体回弹效果给body标签加上fixed就好可以使用document.body动态开关body.fixed{position:fixed;height:100vh;width:100vw;top:0;right:0;box-sizing:border-box;}2.滑动卡住问题问题:滑动时候会卡主不动,短暂静止后或者......