当前位置: 首页 > news >正文

【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;
})

http://www.lryc.cn/news/375736.html

相关文章:

  • 模板方法模式(大话设计模式)C/C++版本
  • 数据提取:数据治理过程中的质量保障
  • 第55期|GPTSecurity周报
  • 移植案例与原理 - utils子系统之file文件操作部件
  • 个股期权有哪些股票?金融新手必须知道!
  • 平庸的学术工作者
  • 安卓软件自动运行插件的开发源代码介绍!
  • 小程序餐饮点餐系统,扫码下单点菜,消费端+配送端+收银端+理端
  • 说说你这个项目的架构情况吧?
  • 接口响应时间测试
  • C++ 61 之 函数模版
  • 甘特图如何画以及具体实例详解
  • Android SDK版本号与API Level 的对应关系
  • AES加解密工具类
  • Http协议JSON格式
  • 【算法与设计】期末总结
  • odoo报错KeyError: ‘ir.http‘
  • 每日的影视作品推荐❗❗
  • css 文字下划线 text-decoration
  • Java-01-基础篇-04 Java集合-04-HashMap (源码)
  • 开源语音合成模型ChatTTS本地部署结合内网穿透实现远程访问
  • 超多细节—app图标拖动排序实现详解
  • 基于深度学习的文字识别
  • Pikachu靶场--文件包含
  • get put post delete 区别以及幂等
  • ultralytics版本及对应的更新
  • 在现代编程环境中,Perl 如何与其他流行语言(如 Python、Java 等)进行集成和协作?
  • BEV 中 multi-frame fusion 多侦融合(一)
  • “Docker操作案例实践“
  • Redis 管道