HarmonyOS 鸿蒙Next:APP内部使用arkweb 打开的H5页面,H5是否能直接调起拨打电话?

HarmonyOS 鸿蒙Next:APP内部使用arkweb 打开的H5页面,H5是否能直接调起拨打电话? 如标题,点击拨打电话

2 回复

Web组件可以实现点击前端页面超链接跳转到其他应用。可以参考以下demo,点击call.html前端页面中的超链接,跳转到电话应用的拨号界面:

// xxx.ets

import { webview } from '@kit.ArkWeb';
import { call } from '@kit.TelephonyKit';

@Entry
@Component
struct WebComponent {
  webviewController: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Web({ src: $rawfile('call.html'), controller: this.webviewController })
        .onLoadIntercept((event) => {
          if (event) {
            let url: string = event.data.getRequestUrl();
            // 判断链接是否为拨号链接
            if (url.indexOf('tel://') === 0) {
              // 跳转拨号界面
              call.makeCall(url.substring(6), (err) => {
                if (!err) {
                  console.info('make call succeeded.');
                } else {
                  console.info('make call fail, err is:' + JSON.stringify(err));
                }
              });
              return true;
            }
          }
          return false;
        })
    }
  }
}

前端页面call.html代码。

<!-- call.html -->
<!DOCTYPE html>
<html>
<body>
  <div>
    <a href="tel://xxx xxxx xxx">拨打电话</a>
  </div>
</body>
</html>

更多关于HarmonyOS 鸿蒙Next:APP内部使用arkweb 打开的H5页面,H5是否能直接调起拨打电话?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,当APP内部使用arkweb打开H5页面时,H5页面本身并不具备直接调用系统拨打电话功能的能力,因为出于安全和隐私保护的考虑,Web内容通常被限制在沙盒环境中运行,不能直接访问设备的核心功能。

不过,鸿蒙系统提供了一些机制来实现Web内容与原生应用之间的交互。开发者可以通过arkweb提供的接口,在H5页面中触发某些事件或调用特定的JavaScript函数,然后由原生应用捕获这些事件或函数调用,进而在原生应用层面执行拨打电话的操作。

具体来说,开发者需要在原生应用中实现一个监听器或处理函数,用于接收来自H5页面的请求,并调用鸿蒙系统提供的拨打电话API来完成拨号动作。这样,虽然H5页面不能直接拨打电话,但可以通过与原生应用的协作间接实现这一功能。

如果开发者在实现过程中遇到具体问题,可以查阅鸿蒙系统的官方文档或开发指南,了解更详细的接口说明和实现方法。如果问题依旧没法解决请联系官网客服,官网地址是:

https://www.itying.com/category-93-b0.html

回到顶部