HarmonyOS 鸿蒙Next 拉起电话呼叫、短信发送能力介绍 鸿蒙场景化代码

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 拉起电话呼叫、短信发送能力介绍 鸿蒙场景化代码 一、蜂窝电话呼叫

当前仅系统应用支持直接拨号,三方应用仅能跳转到拨号页,可以通过call.makeCall来拉起拨号界面。并在makeCall函数的第一个参数中指定电话号码,该功能代码在2in1设备中不可用。

call.makeCall官方文档

makeCall(phoneNumber: string, callback: AsyncCallback): void

跳转到拨号界面,并显示待拨出的号码。使用callback异步回调。只支持在UIAbility中调用。

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

系统能力:SystemCapability.Applications.Contacts

参数:

参数名 类型 必填 说明
phoneNumber string 电话号码
callback AsyncCallback 异步返回结果
//拨号
TestTelephonyCall() {
  // 调用查询能力接口
  let isSupport = call.hasVoiceCapability();
  if (isSupport) {
    // 如果设备支持呼叫能力,则继续跳转到拨号界面,并显示拨号的号码
    call.makeCall("13012344321", (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));
    });
  }
}

可通过observer.on监听callStateChange通话状态变更,设置对应的回调。

callState枚举参考

二、发送蜂窝短信

开发者可以通过显式指定bundleName为com.ohos.mms、abilityName为com.ohos.mms.MainAbility来拉起联系人应用,其中contactsName为用户名,telephone为电话号码。

发送短信的接口需要系统权限才可调用,三方应用如果有发送短信需求,需要在应用内实现跳转到短信编辑的功能,并且需要携带编辑内容和收件人号码,可以通过调用元能力startAbility接口指定号码并跳转到发送短信页面的方式实现。

//短信
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: "我才是测试内容"
    }
  };
  const context = getContext(this) as common.UIAbilityContext;
  context.startAbilityForResult(want).then((data) => {
    console.log("Success" + JSON.stringify(data))
  }).catch(() => {
    console.log("error")
  })
}

三、效果预览

效果预览

参考仓库地址


更多关于HarmonyOS 鸿蒙Next 拉起电话呼叫、短信发送能力介绍 鸿蒙场景化代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 拉起电话呼叫、短信发送能力介绍 鸿蒙场景化代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,拉起电话呼叫和短信发送的能力是通过特定的API接口实现的,这些接口允许开发者在应用中集成通信功能。以下是对这两种能力的简要介绍及代码示例(场景化代码):

电话呼叫

在鸿蒙应用中,你可以使用TelephonyManager类来发起电话呼叫。需要注意的是,应用需要具备相应的权限(如ohos.permission.CALL_PHONE)。

示例代码:

// 注意:此处仅为示例,实际鸿蒙代码不使用Java
TelephonyManager telephonyManager = (TelephonyManager) getTelephonyManager();
telephonyManager.makeCall("tel:1234567890"); // 替换为实际电话号码

注意:鸿蒙实际开发中使用的是JS或ETS(Extensible TypeScript)语言,上述Java代码仅为说明功能,实际代码会有所不同。

短信发送

对于短信发送,你可以使用SmsManager类。同样,应用需要获得发送短信的权限(如ohos.permission.SEND_SMS)。

示例代码(概念性,非实际Java代码):

// 注意:此处仅为示例,实际鸿蒙代码不使用Java
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("1234567890", null, "Hello, this is a test message.", null, null); // 替换为实际电话号码和消息内容

总结

鸿蒙系统提供了丰富的API来支持电话呼叫和短信发送功能,开发者可以在应用中根据需求进行集成。但需要注意的是,实际开发时需要使用鸿蒙特定的编程语言(如ETS)和API。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部