HarmonyOS 鸿蒙Next中如何拉起拨号界面
HarmonyOS 鸿蒙Next中如何拉起拨号界面 有没有什么APi或者方法可以拉起拨号界面
【解决方案】
办公类应用通讯录功能通常需要使用拨打电话的能力,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动作,并设置uri为tel:前缀加号码。示例代码:
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模块拉起拨号界面。具体实现如下:
- 导入相关模块:
 
import wantAgent from '@ohos.app.ability.wantAgent';
import { BusinessError } from '@ohos.base';
- 创建并触发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模块的拨号功能。
        
      
                  
                  
                  
