鸿蒙OS开发文档 鸿蒙OS 发送一条文本信息

2024-02-25 开发教程 鸿蒙OS开发文档 匿名 3

场景介绍

应用需要发送一条短信给一个指定的号码时,使用本业务。发送信息需要经过短信中心,短信中心号码可以是运营商默认的,也可以由应用自己指定。

如果设备支持同时插入 2 张 SIM 卡,且 2 张 SIM 卡均在位时,短信会从默认 SIM 卡发出。应用可通过调用 getDefaultSmsSlotId 来获取当前发短信的默认 SIM 卡位置。目前 API 暂不支持短信发送结果通知和送达报告。

接口说明

ShortMessageManager 为开发者提供短信管理功能,具体功能分类如下表。

功能分类接口名描述所需权限
能力获取hasSmsCapability()检查当前设备是否支持短信收发。
获取管理对象getInstance(Context context)获取短信管理对象。
获取默认短信卡getDefaultSmsSlotId()获取默认短信卡对应卡槽ID。
长短信转化splitMessage(String content)将超过140个字节的长短信(如中文70个字符,英文160个字符)拆分成多条短信。ohos.permission.SEND_MESSAGES
发送短信sendMessage(String destinationHost, String serviceCenter, String content)发送单条短信。ohos.permission.SEND_MESSAGES
sendMultipartMessage(String destinationHost, String serviceCenter, ArrayList<String> parts)发送拆分后的多条短信。ohos.permission.SEND_MESSAGES

开发步骤

  1. 调用 ShortMessageManager 的 getInstance 接口,创建/获取短信收发管理对象。
  1. 调用 hasSmsCapability() 接口获取当前设备短信收发能力,如果支持继续下一步;如果不支持则无法收发短信。
  1. 发送短信。
// 创建短信收发管理对象
ShortMessageManager smManager = ShortMessageManager.getInstance(context);
// 检查短信能力
if (!smManager.hasSmsCapability()) {
return;
}
// 如果设备支持收发短信,则继续发送短信
// 发送短信前可先调用splitMessage()接口判断拆分后的短信条数,然后决定调用长短信或普通短信发送接口
ArrayList<String> msgs = smManager.splitMessage(messageContent);
if (msgs.size() > 1) { // 长短信拆分发送
smManager.sendMultipartMessage(destinationNumber, serviceCenter, msgs);
} else { // 一般文本短信发送
smManager.sendMessage(destinationNumber, serviceCenter, messageContent);
}