场景介绍
应用需要发送一条短信给一个指定的号码时,使用本业务。发送信息需要经过短信中心,短信中心号码可以是运营商默认的,也可以由应用自己指定。
如果设备支持同时插入 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 的 getInstance 接口,创建/获取短信收发管理对象。
- 调用 hasSmsCapability() 接口获取当前设备短信收发能力,如果支持继续下一步;如果不支持则无法收发短信。
- 发送短信。
// 创建短信收发管理对象
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);
}
请发表评论