拨打电话
场景介绍
开发者可以通过以下方式实现拨打电话的功能:
- 对于三方应用,开发者可以使用makeCall接口,拉起系统电话应用,用户可以自行呼出通话。
基本概念
-
通话状态码
将当前的通话状态上报给app,可以根据当前的通话状态去做一些逻辑处理。例如在当前没有正在进行呼叫的时候,可以正常拨打新的一通电话。
名称 值 说明 CALL_STATE_UNKNOWN -1 无效状态,当获取呼叫状态失败时返回。 CALL_STATE_IDLE 0 表示没有正在进行的呼叫。 CALL_STATE_RINGING 1 表示来电正在振铃或等待。 CALL_STATE_OFFHOOK 2 表示至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃或等待。
约束与限制
- 仅支持在标准系统上运行。
- 设备需插入可用的SIM卡。
接口说明
说明
为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数。
接口名 | 描述 |
---|---|
hasVoiceCapability(): boolean; | 判断是否具有语音功能。 |
makeCall(phoneNumber: string, callback: AsyncCallback): void | 转到拨号屏幕,显示被叫号码。 |
observer模块为开发者提供订阅和取消订阅通话业务状态的功能。
接口名 | 描述 |
---|---|
on(type: ‘callStateChange’, options: { slotId: number }, callback: Callback<{ state: CallState, number: string }>): void; | 监听通话状态变化。 |
开发步骤
使用makeCall拨打电话
-
导入call和observer模块。
-
调用hasVoiceCapability,确认当前设备是否支持拨号。
-
调用makeCall接口,跳转到拨号界面并显示待拨号的号码。
-
(可选)订阅通话业务状态变化。
// import需要的模块
import { call, observer } from '@kit.TelephonyKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 调用查询能力接口
let isSupport = call.hasVoiceCapability();
if (isSupport) {
// 如果设备支持呼叫能力,则继续跳转到拨号界面,并显示拨号的号码
call.makeCall("13xxxx", (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));
});
}
短信服务
场景介绍
短信服务模块提供了管理短信的一些基础能力,包括创建、发送短信,获取、设置发送短信的默认SIM卡槽ID,获取、设置短信服务中心地址,以及检查当前设备是否具备短信发送和接收能力等。
基本概念
-
短信服务
即SMS(Short Messaging Service),是一种存储和转发服务。用户的移动电话可以通过它进行相互收发短信,内容以文本、数字或二进制非文本数据为主。发送方的信息通过短信服务中心进行储存并转发给接收方。
-
短信服务中心
即SMSC(Short Message Service Center),负责在基站和移动设备间中继、储存或转发短消息。移动设备到短信服务中心的协议能传输来自移动设备或朝向移动设备的短消息,协议内容遵从GSM 03.40协议。
-
协议数据单元
即PDU(Protocol Data Unit),PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS-2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据短信,UCS-2编码用于发送Unicode字符。
约束与限制
- 仅支持在标准系统上运行。
- 需授予发送短信权限且插入SIM卡才可成功发送短信。
接口说明
说明
为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数
接口名 | 描述 |
---|---|
sendShortMessage(options: SendMessageOptions, callback: AsyncCallback): void | 发送文本或数据SMS消息。 |
createMessage(pdu: Array, specification: string, callback: AsyncCallback): void | 基于协议数据单元(PDU)和指定的SMS协议创建SMS消息实例。 |
getDefaultSmsSlotId(callback: AsyncCallback): void | 获取用于发送短信的默认SIM卡。 |
setSmscAddr(slotId: number, smscAddr: string, callback: AsyncCallback): void | 根据指定的插槽ID设置短信服务中心的地址。 |
getSmscAddr(slotId: number, callback: AsyncCallback): void | 根据指定的插槽ID获取短信服务中心地址。 |
开发步骤
若需要在应用内实现跳转到短信编辑的功能,并且需要携带编辑内容和收件人号码,可以通过调用元能力 startAbility 接口指定号码并跳转到发送短信页面的方式实现。
// 示例代码
import { common, Want } from '@kit.AbilityKit';
const MMS_BUNDLE_NAME = "com.ohos.mms";
const MMS_ABILITY_NAME = "com.ohos.mms.MainAbility";
const MMS_ENTITIES = "entity.system.home";
export class Contact {
contactsName: string;
telephone: number;
constructor(contactsName: string, telephone: number) {
this.contactsName = contactsName;
this.telephone = telephone;
}
}
@Entry
@Component
struct JumpMessage {
private context = getContext(this) as common.UIAbilityContext;
startMMSAbilityExplicit() {
// 这里完善联系人和号码;姓名主要是通过手机号来查询实际联系人名称,因此这种方式还是以手机号码为主。
let params: Array<Object> = [new Contact("张三", 13344556677)];
let want: Want = {
bundleName: "com.ohos.mms",
abilityName: "com.ohos.mms.MainAbility",
parameters: {
contactObjects: JSON.stringify(params),
pageFlag: "conversation",
// 这里填写短信内容。
content: "我是短信具体内容"
}
};
this.context.startAbilityForResult(want).then((data) => {
console.log("Success" + JSON.stringify(data));
}).catch(() => {
console.log("error");
});
}
build() {
Row() {
Column() {
Button('发送短信')
.onClick(() => {
this.startMMSAbilityExplicit();
})
}
.width('100%')
}
.height('100%')
}
}
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿