【HarmonyOS NEXT】如何通过h5拉起应用(在华为浏览器中拉起应用)

华为浏览器支持拉起外部应用
浏览器访问网页经常会遇到deeplink的场景。当前处理方案统一为使用AMS系统能力startAbility去隐式拉起。传递的want参数为
{
"actions": "ohos.want.action.viewData",
"uri": deeplink链接
}
网页需要给自己的应用拉活,因此在网页中添加按钮引导用户拉应用。网页端直接提示打开应用按钮绑定点击事件window.open(iyingyong://www.yingyong.com?url=XXX)>,点击该按钮,打开网页web端收到的url为iyingyong://www.yingyong.com?url=XXX

应用想被成功拉起则需要应用在工程的model.json5文件中配置abilities的skills中配置
 

{
    "actions": [
        "ohos.want.action.viewData"
    ],
    "uris": [
        {
            "scheme": "iyingyong"
        }
    ]
}


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

浏览器拉起应用,前端网页:

<!DOCTYPE html>
<html>
<body>
<div>
<button type="button" onclick="goToLink()">拉起应用</button>
</div>
</body>
</html>
<script>
function goToLink() {
window.open('iyingyong://xxxxxx/')
}
</script>



应用配置:

{
"actions": [
"ohos.want.action.viewData"
],
"uris": [
{
"scheme": "iyingyong"
}
]
}


如果使用web拉起
 

Web({ src: $rawfile('local.html'), controller: this.controller })
.onLoadIntercept((event) => {
if (event) {
let url: string = event.data.getRequestUrl();
console.log(url)
if (url.indexOf('iyingyong://') === 0) {
// 跳转拨号界面
const want: Want = {
uri: 'iyingyong://xxxxxx'
}
const context = getContext(this) as common.UIAbilityContext;
context.startAbility(want).then(() => {
//拉起成功
}).catch(() => {
})
return true;
}
}
return false;
})

相关推荐

  1. k8s一个pod底层是如何运行的

    2024-06-18 12:44:04       28 阅读
  2. Linux 自动检测进程是否存活,如果挂掉自动

    2024-06-18 12:44:04       40 阅读
  3. Flutter——用户关闭键盘后强制键盘

    2024-06-18 12:44:04       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 12:44:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 12:44:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 12:44:04       87 阅读
  4. Python语言-面向对象

    2024-06-18 12:44:04       96 阅读

热门阅读

  1. C++中的八大设计原则

    2024-06-18 12:44:04       25 阅读
  2. window环境C++读取带中文的文档乱码问题

    2024-06-18 12:44:04       34 阅读
  3. 使用微信小程序制作画布

    2024-06-18 12:44:04       28 阅读
  4. 比较两个对象相同对象不同值

    2024-06-18 12:44:04       28 阅读
  5. “==“和 equals 方法究竟有什么区别?

    2024-06-18 12:44:04       35 阅读
  6. 【斗地主game】

    2024-06-18 12:44:04       28 阅读
  7. Ant-Design-Vue动态表头并填充数据

    2024-06-18 12:44:04       24 阅读
  8. 【React】如何理解 React 的 Fiber?

    2024-06-18 12:44:04       35 阅读
  9. Android XML 布局基础(八)帧布局 - GridLayout

    2024-06-18 12:44:04       33 阅读
  10. AndroidStudio|本地生成APK|build.gradle.kts配置

    2024-06-18 12:44:04       32 阅读
  11. NLP学习与踩坑记录(持续更新版)

    2024-06-18 12:44:04       34 阅读