应用需要发送一条短信给一个指定的号码时,使用本业务。发送信息需要经过短信中心,短信中心号码可以是运营商默认的,也可以由应用自己指定。
如果设备支持同时插入 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 |
// 创建短信收发管理对象
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);
}
© 2023 mianshi8.net MIT license