HarmonyOS 鸿蒙Next中如何拉起拨号界面

HarmonyOS 鸿蒙Next中如何拉起拨号界面 有没有什么APi或者方法可以拉起拨号界面

4 回复

【解决方案】

办公类应用通讯录功能通常需要使用拨打电话的能力,HarmonyOS的Telephony Kit提供了呼叫管理功能,包括拨打电话、跳转到拨号界面、获取通话状态,仅需一行代码(call.makeCall((this.phone).toString(), (err: BusinessError) => {})),即可轻松从通讯录拉起拨号界面拨打电话。

常见页面路径:首页->通讯录->拨号。

如何拉起界面并指定号码:开发者可以通过call.makeCall拉起拨号界面,并在makeCall函数的第一个参数中指定电话号码。

更多关于HarmonyOS 鸿蒙Next中如何拉起拨号界面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Telephony Kit(蜂窝通信服务)下的@ohos.telephony.call (拨打电话)

该模块提供呼叫管理功能,包括拨打电话、跳转到拨号界面、获取通话状态、格式化电话号码等。

call.makeCall

makeCall(context: Context, phoneNumber: string): Promise<void>

跳转到拨号界面,并显示待拨出的号码。使用Promise异步回调。后台调用需要申请ohos.permission.START_ABILITIES_FROM_BACKGROUND权限。

元服务API:从API version 12开始,该接口支持在元服务中使用。

系统能力:SystemCapability.Applications.Contacts

参数:

参数名 类型 必填 说明
context Context 应用上下文Context。
phoneNumber string 电话号码。

import { BusinessError } from ‘@kit.BasicServicesKit’;

// 获取context let context = this.getUIContext().getHostContext() as Context;

// 从API15开始支持tel格式电话号码,如:“tel:13xxxx” call.makeCall(context, “138xxxxxxxx”).then(() => { console.log(makeCall success); }).catch((err: BusinessError) => { console.error(makeCall fail, promise: err->${JSON.stringify(err)}); });

在HarmonyOS Next中,通过want机制拉起拨号界面。使用wantConstant.Action.DIAL动作,并设置uritel:前缀加号码。示例代码:

import wantConstant from '@ohos.app.ability.wantConstant';

let want = {
  action: wantConstant.Action.DIAL,
  uri: 'tel:10086'
};
this.context.startAbility(want).then(() => {
  // 成功回调
}).catch(err => {
  // 异常处理
});

此方法直接调用系统拨号能力,无需额外权限。

在HarmonyOS Next中,可以通过wantAgent模块拉起拨号界面。具体实现如下:

  1. 导入相关模块:
import wantAgent from '@ohos.app.ability.wantAgent';
import { BusinessError } from '@ohos.base';
  1. 创建并触发WantAgent:
// 构造拨号意图
let wantInfo: wantAgent.Want = {
  action: 'ohos.want.action.dial',
  entities: ['entity.system.dialing']
};

// 创建WantAgent参数
let wantAgentInfo: wantAgent.WantAgentInfo = {
  wants: [wantInfo],
  operationType: wantAgent.OperationType.START_ABILITY
};

// 获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo, (err: BusinessError, data: wantAgent.WantAgent) => {
  if (err) {
    console.error(`getWantAgent failed, code: ${err.code}, message: ${err.message}`);
    return;
  }
  
  // 触发WantAgent
  wantAgent.trigger(data);
});

这种方式会直接打开系统拨号界面,用户可以在界面中输入电话号码进行拨打。注意需要在module.json5中声明相关权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.PLACE_CALL"
      }
    ]
  }
}

该方法适用于需要用户手动输入号码的场景,如果希望直接拨打特定号码,可以使用call模块的拨号功能。

回到顶部