##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 })
}
}