短信服务

2024-01-23 16:39 更新

短信服务提供了管理短信的一些基础能力,包括创建、发送短信,获取、设置发送短信的默认SIM卡槽ID,获取、设置短信服务中心(SMSC)地址,以及检查当前设备是否具备短信发送和接收能力等。

说明

本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

  1. import sms from '@ohos.telephony.sms';

sms.createMessage

createMessage(pdu: Array<number>, specification: string, callback: AsyncCallback<ShortMessage>): void

根据协议数据单元(PDU)和指定的短信协议创建短信实例。使用callback异步回调。

系统能力:SystemCapability.Telephony.SmsMms

参数:

参数名

类型

必填

说明

pdu

Array<number>

协议数据单元,从收到的信息中获取。

specification

string

短信协议类型。

- 3gpp:表示GSM/UMTS/LTE SMS

- 3gpp2:表示CDMA SMS

callback

AsyncCallback<ShortMessage>

回调函数。

示例:

  1. const specification = '3gpp';
  2. // 以数组的形式显示协议数据单元(PDU),类型为number,例如[0x08, 0x91, ...]
  3. const pdu = [0x08, 0x91];
  4. sms.createMessage(pdu, specification, (err, data) => {
  5. console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
  6. });

sms.createMessage

createMessage(pdu: Array<number>, specification: string): Promise<ShortMessage>

根据协议数据单元(PDU)和指定的短信协议创建短信实例。使用Promise异步回调。

系统能力:SystemCapability.Telephony.SmsMms

参数:

参数名

类型

必填

说明

pdu

Array<number>

协议数据单元,从收到的信息中获取。

specification

string

短信协议类型。

- 3gpp:表示GSM/UMTS/LTE SMS

- 3gpp2:表示CDMA SMS

返回值:

类型

说明

Promise<ShortMessage>

以Promise形式返回创建的短信实例。

示例:

  1. const specification = '3gpp';
  2. // 以数组的形式显示协议数据单元(PDU),类型为number,例如[0x08, 0x91, ...]
  3. const pdu = [0x08, 0x91];
  4. let promise = sms.createMessage(pdu, specification);
  5. promise.then(data => {
  6. console.log(`createMessage success, promise: data->${JSON.stringify(data)}`);
  7. }).catch(err => {
  8. console.error(`createMessage failed, promise: err->${JSON.stringify(err)}`);
  9. });

sms.sendMessage

sendMessage(options: SendMessageOptions): void

发送短信。

需要权限:ohos.permission.SEND_MESSAGES

系统能力:SystemCapability.Telephony.SmsMms

参数:

参数名

类型

必填

说明

options

SendMessageOptions

发送短信的参数和回调,参考SendMessageOptions

错误码:

以下错误码的详细介绍请参见ohos.telephony(电话子系统)错误码错误码。

错误码ID

错误信息

201

Permission denied.

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

  1. let sendCallback = function (err, data) {
  2. console.log(`sendCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
  3. }
  4. let deliveryCallback = function (err, data) {
  5. console.log(`deliveryCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
  6. }
  7. let slotId = 0;
  8. let content = '短信内容';
  9. let destinationHost = '+861xxxxxxxxxx';
  10. let serviceCenter = '+861xxxxxxxxxx';
  11. let destinationPort = 1000;
  12. let options = {slotId, content, destinationHost, serviceCenter, destinationPort, sendCallback, deliveryCallback};
  13. sms.sendMessage(options);

sms.getDefaultSmsSlotId7+

getDefaultSmsSlotId(callback: AsyncCallback<number>): void

获取发送短信的默认SIM卡槽ID。使用callback异步回调。

系统能力:SystemCapability.Telephony.SmsMms

参数:

参数名

类型

必填

说明

callback

AsyncCallback<number>

回调函数。

- 0:卡槽1

- 1:卡槽2

示例:

  1. sms.getDefaultSmsSlotId((err, data) => {
  2. console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
  3. });

sms.getDefaultSmsSlotId7+

getDefaultSmsSlotId(): Promise<number>

获取发送短信的默认SIM卡槽ID。使用Promise异步回调。

系统能力:SystemCapability.Telephony.SmsMms

返回值:

类型

说明

Promise<number>

以Promise形式返回发送短信的默认SIM卡:

- 0:卡槽1

- 1:卡槽2

示例:

  1. let promise = sms.getDefaultSmsSlotId();
  2. promise.then(data => {
  3. console.log(`getDefaultSmsSlotId success, promise: data->${JSON.stringify(data)}`);
  4. }).catch(err => {
  5. console.error(`getDefaultSmsSlotId failed, promise: err->${JSON.stringify(err)}`);
  6. });

sms.hasSmsCapability7+

hasSmsCapability(): boolean

检查当前设备是否具备短信发送和接收能力,该方法是同步方法。

系统能力:SystemCapability.Telephony.SmsMms

返回值:

类型

说明

boolean

- true:设备具备短信发送和接收能力。

- false:设备不具备短信发送和接收能力。

  1. let result = sms.hasSmsCapability();
  2. console.log(`hasSmsCapability: ${JSON.stringify(result)}`);

ShortMessage

短信实例。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称

类型

必填

说明

hasReplyPath

boolean

收到的短信是否包含“TP-Reply-Path”,默认为false。

“TP-Reply-Path”:设备根据发送SMS消息的短消息中心进行回复。

isReplaceMessage

boolean

收到的短信是否为“替换短信”,默认为false。

“替换短信”有关详细信息,参见 “3GPP TS 23.040 9.2.3.9”。

isSmsStatusReportMessage

boolean

当前消息是否为“短信状态报告”,默认为false。

“短信状态报告”是一种特定格式的短信,被用来从Service Center到Mobile Station传送状态报告。

messageClass

ShortMessageClass

短信类型。

pdu

Array<number>

SMS消息中的协议数据单元 (PDU)。

protocolId

number

发送短信时使用的协议标识。

scAddress

string

短消息服务中心(SMSC)地址。

scTimestamp

number

SMSC时间戳。

status

number

SMS-STATUS-REPORT消息中的短信状态指示短信服务中心(SMSC)发送的短信状态。

visibleMessageBody

string

短信正文。

visibleRawAddress

string

发送者地址。

ShortMessageClass

短信类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称

说明

UNKNOWN

0

未知类型。

INSTANT_MESSAGE

1

即时消息,收到后立即显示。

OPTIONAL_MESSAGE

2

存储在设备或SIM卡上的短信。

SIM_MESSAGE

3

包含SIM卡信息的短信,需要存储在SIM卡中。

FORWARD_MESSAGE

4

要转发到另一台设备的短信。

SendMessageOptions

发送短信的参数和回调。根据SendMessageOptions中的可选参数content的值判断短信类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称

类型

必填

说明

slotId

number

用于发送短信的SIM卡槽ID:

- 0:卡槽1

- 1:卡槽2

destinationHost

string

短信的发送地址。

content

string | Array<number>

如果内容是字符串,则这是一条文本短信。如果内容是字节数组,则这是一条数据短信。

serviceCenter

string

短信中心地址。默认使用SIM卡中的短信中心地址。

destinationPort

number

如果发送数据消息,destinationPort 是必需的。否则是可选的。

sendCallback

AsyncCallback<ISendShortMessageCallback>

短信发送结果回调,返回短信发送的结果,参考ISendShortMessageCallback

deliveryCallback

AsyncCallback<IDeliveryShortMessageCallback>

短信送达结果回调,返回短信递送报告,参考IDeliveryShortMessageCallback

ISendShortMessageCallback

回调实例。返回短信发送结果、存储已发送短信的URI和是否为长短信的最后一部分。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称

类型

必填

说明

isLastPart

boolean

指定这是否是长短信的最后一部分。true表示这是长短信的最后一部分,false表示不是。默认为false。

result

SendSmsResult

短信发送结果。

url

string

存储发送短信的URI。

IDeliveryShortMessageCallback

回调实例,返回短信送达报告。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称

类型

必填

说明

pdu

Array<number>

短信送达报告。

SendSmsResult

短信发送结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Telephony.SmsMms。

名称

说明

SEND_SMS_SUCCESS

0

发送短信成功。

SEND_SMS_FAILURE_UNKNOWN

1

发送短信失败,原因未知。

SEND_SMS_FAILURE_RADIO_OFF

2

发送短信失败,原因为调制解调器关机。

SEND_SMS_FAILURE_SERVICE_UNAVAILABLE

3

发送短信失败,原因为网络不可用、不支持发送或接收短信。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号