HarmonyOS 鸿蒙Next的H5导流页,在Webview上运行,用户没安装APP,怎么跳转应用市场下载

HarmonyOS 鸿蒙Next的H5导流页,在Webview上运行,用户没安装APP,怎么跳转应用市场下载 【设备信息】Mate60

【API版本】Api13

【DevEco Studio版本】5.0.7.200

【问题描述】

H5的导流页,在Webview上运行,用户没安装APP,怎么跳转应用市场下载?

2 回复

用h5打开应用市场可以参考以下demo:

// H5页面:
go_to_agc_unipay.html:
<!-- index.html -->
<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="callArkTS()">Click Me!</button>
<p id="demo"></p>
<script> 
function callArkTS() { let str = naviApp.jumpAgcDetailPage(); } 
</script>
</body>
</html>

//WebPage页面

import web_webview from '@ohos.web.webview';
import { common, Want } from '@kit.AbilityKit';
class NaviAppStore {
  constructor() {}
  jumpAgcDetailPage() {
    const want: Want = {
      uri: `store://appgallery.huawei.com/app/detail?id=xxx` //跳转拉起应用市场 农行APP的下载页面
      //uri: `store://appgallery.huawei.com/` //跳转拉起应用市场APP首页
    }
    const context = getContext(this) as common.UIAbilityContext;
    context.startAbility(want).then(() => {
      console.log('jumpAgcDetailPage 拉起成功 农行APP的下载页面');
    }).catch(() => {
      console.log('jumpAgcDetailPage 拉起失败');
    })
  }
}
// 组件:
@Entry
@Component
struct WebPage {
  controller: web_webview.WebviewController = new web_webview.WebviewController()
  @State naviApp:NaviAppStore = new NaviAppStore()
  build() {
    Row() {
      Column() {
        Web({ src: $rawfile("go_to_agc_unipay.html"), controller: this.controller })
          .javaScriptProxy({ object: this.naviApp, name: "naviApp", methodList: ["jumpAgcDetailPage"], controller: this.controller })
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next的H5导流页,在Webview上运行,用户没安装APP,怎么跳转应用市场下载的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,如果用户在Webview上访问H5导流页且未安装APP,可以通过以下步骤实现跳转应用市场下载:

  1. 检测APP安装状态:使用鸿蒙提供的AbilityBundleManager接口,检测设备上是否已安装目标APP。如果未安装,执行下一步。

  2. 生成应用市场链接:根据应用在华为应用市场的唯一标识(如包名),生成对应的下载链接。

  3. 跳转应用市场:使用IntentUri对象,通过startAbilitystartService方法,启动应用市场并导航到目标APP的下载页面。

示例代码:

let intent = {
    action: "android.intent.action.VIEW",
    uri: "market://details?id=com.example.app"
};
featureAbility.startAbility(intent);
回到顶部