HarmonyOS NEXT实战:拨打电话

HarmonyOS NEXT实战:拨打电话

HarmonyOS Next实战##HarmonyOS SDK应用服务##教育##

目标:输入电话号码,并拨打电话。

知识点:

Telephony Kit(蜂窝通信服务)提供一系列API帮助开发者开发通讯类应用,包括:

call模块(拨打电话):系统应用可以直接拨打电话,在应用界面显示通话;三方应用可以拉起系统电话应用,跳转至拨号界面,从而实现拨打电话的功能,具体可参考拨打电话开发指导。除此之外,应用还可以通过call模块,实现格式化电话号码、判断是否紧急号码等功能,详情请参考@ohos.telephony.call API参考。

sms模块(短信服务):应用可以实现创建、发送短信消息的功能,具体可参考发送短信开发指导。除此之外,应用还可以实现获取、设置短信服务中心地址,和检查当前设备是否具备短信发送和接收能力等功能,详情请参考@ohos.telephony.sms API参考。

radio模块(网络搜索):应用可以调用API获取当前注册网络名称、网络服务状态以及信号强度相关信息,详情请参考@ohos.telephony.radio API参考。

data模块(蜂窝数据):蜂窝数据是无线通讯技术标准的一种,从数据的传输到交换都采用分组技术(Packet Switch),能够为移动设备提供话音、数据、视频图像等业务,经常用于支持用户在智能设备上使用应用程序,以及在移动网络上浏览网页,详情请参考@ohos.telephony.data API参考。

sim模块(SIM卡管理):应用可以调用API获取SIM卡相关信息,如服务提供商、ISO(International Organization for Standardization,国际标准化组织)国家码、归属PLMN(Public Land Mobile Network,公共陆地移动网络)号等,详情请参考@ohos.telephony.sim API参考。

使用makeCall拨打电话

导入call和observer模块。

调用hasVoiceCapability,确认当前设备是否支持拨号。

调用makeCall接口,跳转到拨号界面并显示待拨号的号码。

实战:CallPhoneDemoPage

import { call, observer } from '@kit.TelephonyKit';

import { BusinessError } from '@kit.BasicServicesKit';

@Entry

@Component

struct CallPhoneDemoPage {

@State message: string = 'Hello World';

@State phone: string = ''

build() {

Column({ space: 10 }) {

Text('拨打电话Demo')

TextInput({ placeholder: '请输入要拨打的电话' })

.type(InputType.PhoneNumber)

.onChange((value) => {

this.phone = value

})

Button('拨号')

.onClick(() => {

// 调用查询能力接口

let isSupport = call.hasVoiceCapability();

if (isSupport) {

// 如果设备支持呼叫能力,则继续跳转到拨号界面,并显示拨号的号码

call.makeCall(this.phone, (err: BusinessError) => {

if (!err) {

console.log("make call success.");

} else {

console.log("make call fail, err is:" + JSON.stringify(err));

}

});

// 订阅通话业务状态变化(可选)

class SlotId {

slotId: number = 0

}

class CallStateCallback {

state: call.CallState = call.CallState.CALL_STATE_UNKNOWN;

number: string = "";

}

let slotId: SlotId = { slotId: 0 }

observer.on("callStateChange", slotId, (data: CallStateCallback) => {

console.log("call state change, data is:" + JSON.stringify(data));

});

}

})

}

.height('100%')

.width('100%')

.padding({ left: 20, right: 20 })

}

}

相关创作