# 短信服务 - [导入模块](#section111401036143) - [sms.createMessage](#section3831173019331) - [sms.createMessage](#section9796242123511) - [sms.sendMessage](#section128401423810) - [sms.getDefaultSmsSlotId7+](#section46193383478) - [sms.getDefaultSmsSlotId7+](#section19981626114817) - [sms.setSmscAddr7+](#section155849574485) - [sms.setSmscAddr7+](#section7801426144910) - [sms.getSmscAddr7+](#section347174613494) - [sms.getSmscAddr7+](#section1178428175016) - [ShortMessage](#section345181318300) - [ShortMessageClass](#section141712166453) - [SendMessageOptions](#section12262183471518) - [ISendShortMessageCallback](#section16646146115317) - [IDeliveryShortMessageCallback](#section12183749531) - [SendSmsResult](#section13290132311575) >**说明:** > >标记7+的表示从API Version 7开始支持,未标记的表示从API Version 6开始支持。 ## 导入模块 ``` import sms from '@ohos.telephony.sms'; ``` ## sms.createMessage createMessage\(pdu: Array, specification: string, callback: AsyncCallback\): void 根据协议数据单元(PDU)和指定的短信协议创建短信实例,使用callback方式作为异步方法。 - 参数

参数名

类型

必填

说明

pdu

Array<number>

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

specification

string

短信协议类型。

  • 3gpp表示GSM/UMTS/LTE SMS
  • 3gpp2表示CDMA SMS

callback

AsyncCallback<ShortMessage>

回调函数。

- 示例 ``` let specification = '3gpp'; let pdu = [0x08, 0x91, ...]; sms.createMessage(pdu, specification, (err, data) => { console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); }); ``` ## sms.createMessage createMessage\(pdu: Array, specification: string\): Promise 根据协议数据单元(PDU)和指定的短信协议创建短信实例,使用Promise方式作为异步方法。 - 参数

参数名

类型

必填

说明

pdu

Array<number>

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

specification

string

短信协议类型。

  • 3gpp表示GSM/UMTS/LTE SMS
  • 3gpp2表示CDMA SMS
- 返回值

类型

说明

Promise<ShortMessage>

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

- 示例 ``` let specification = '3gpp'; let pdu = [0x08, 0x91, ...]; let promise = sms.createMessage(pdu, specification); promise.then(data => { console.log(`createMessage success, promise: data->${JSON.stringify(data)}`); }).catch(err => { console.error(`createMessage fail, promise: err->${JSON.stringify(err)}`); }); ``` ## sms.sendMessage sendMessage\(options: SendMessageOptions\): void 发送短信。 需要ohos.permission.SEND\_MESSAGES权限。 - 参数

参数名

类型

必填

说明

options

SendMessageOptions

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

- 示例 ``` let sendCallback = function (err, data) { console.log(`sendCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); } let deliveryCallback = function (err, data) { console.log(`deliveryCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); } let slotId = 0; let content = '短信内容'; let destinationHost = '+861xxxxxxxxxx'; let serviceCenter = '+861xxxxxxxxxx'; let destinationPort = 1000; let options = {slotId, content, destinationHost, serviceCenter, destinationPort, sendCallback, deliveryCallback}; sms.sendMessage(options); ``` ## sms.getDefaultSmsSlotId7+ getDefaultSmsSlotId\(callback: AsyncCallback\): void 获取发送短信的默认SIM卡槽ID,使用callback方式作为异步方法。 - 参数

参数名

类型

必填

说明

callback

AsyncCallback<number>

回调函数。

  • 0:卡槽1
  • 1:卡槽2
- 示例 ``` sms.getDefaultSmsSlotId((err, data) => { console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); }); ``` ## sms.getDefaultSmsSlotId7+ getDefaultSmsSlotId\(\): Promise 获取发送短信的默认SIM卡槽ID,使用Promise方式作为异步方法。 - 返回值

类型

说明

Promise<number>

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

  • 0:卡槽1
  • 1:卡槽2
- 示例 ``` let promise = call.getDefaultSmsSlotId(); promise.then(data => { console.log(`getDefaultSmsSlotId success, promise: data->${JSON.stringify(data)}`); }).catch(err => { console.error(`getDefaultSmsSlotId fail, promise: err->${JSON.stringify(err)}`); }); ``` ## sms.setSmscAddr7+ setSmscAddr\(slotId: number, smscAddr: string, callback: AsyncCallback\): void 设置短信服务中心(SMSC)地址,使用callback方式作为异步方法。 需要ohos.permission.SET\_TELEPHONY\_STATE权限,该权限为系统权限。 - 参数

参数名

类型

必填

说明

slotId

number

SIM卡槽ID:

  • 0:卡槽1
  • 1:卡槽2

smscAddr

string

短信服务中心地址。

callback

AsyncCallback<void>

回调函数。

- 示例 ``` let slotId = 0; let smscAddr = '+861xxxxxxxxxx'; sms.setSmscAddr(slotId, smscAddr, (err,data) => { console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); }); ``` ## sms.setSmscAddr7+ setSmscAddr\(slotId: number, smscAddr: string\): Promise 设置短信服务中心(SMSC)地址,使用Promise方式作为异步方法。 需要ohos.permission.SET\_TELEPHONY\_STATE权限,该权限为系统权限。 - 参数

参数名

类型

必填

说明

slotId

number

SIM卡槽ID:

  • 0:卡槽1
  • 1:卡槽2

smscAddr

string

短信服务中心地址。

- 返回值

类型

说明

Promise<void>

以Promise形式异步返回设置结果。

- 示例 ``` let slotId = 0; let smscAddr = '+861xxxxxxxxxx'; let promise = sms.setSmscAddr(slotId, smscAddr); promise.then(data => { console.log(`setSmscAddr success, promise: data->${JSON.stringify(data)}`); }).catch(err => { console.error(`setSmscAddr fail, promise: err->${JSON.stringify(err)}`); }); ``` ## sms.getSmscAddr7+ getSmscAddr\(slotId: number, callback: AsyncCallback\): void 获取短信服务中心(SMSC)地址,使用callback方式作为异步方法。 需要ohos.permission.GET\_TELEPHONY\_STATE权限,该权限为系统权限。 - 参数

参数名

类型

必填

说明

slotId

number

SIM卡槽ID:

  • 0:卡槽1
  • 1:卡槽2

callback

AsyncCallback<string>

回调函数。

- 示例 ``` let slotId = 0; sms.getSmscAddr(slotId, (err, data) => { console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); }); ``` ## sms.getSmscAddr7+ getSmscAddr\(slotId: number\): Promise 获取短信服务中心(SMSC)地址,使用Promise方式作为异步方法。 需要ohos.permission.GET\_TELEPHONY\_STATE权限,该权限为系统权限。 - 参数

参数名

类型

必填

说明

slotId

number

SIM卡槽ID:

  • 0:卡槽1
  • 1:卡槽2
- 返回值

类型

说明

Promise<string>

以Promise形式返回获取短信服务中心地址的结果。

- 示例 ``` let slotId = 0; let promise = sms.getSmscAddr(slotId); promise.then(data => { console.log(`getSmscAddr success, promise: data->${JSON.stringify(data)}`); }).catch(err => { console.error(`getSmscAddr fail, promise: err->${JSON.stringify(err)}`); }); ``` ## ShortMessage 短信实例

变量

类型

说明

emailAddress

string

电子邮件地址。

emailMessageBody

string

电子邮件正文。

hasReplyPath

boolean

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

  • “TP-Reply-Path”:移动电话根据发送SMS消息的短消息中心进行回复。

isEmailMessage

boolean

收到的短信是否为电子邮件。

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)发送的短信状态。

userRawData

Array<number>

除数据头外的用户数据。

visibleMessageBody

string

短信正文。

visibleRawAddress

string

发送者地址。

## ShortMessageClass 短信类型。

变量

说明

UNKNOWN

0

未知类型。

INSTANT_MESSAGE

1

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

OPTIONAL_MESSAGE

2

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

SIM_MESSAGE

3

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

FORWARD_MESSAGE

4

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

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

参数名

类型

必填

说明

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和是否为长短信的最后一部分。

参数名

类型

必填

说明

isLastPart

boolean

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

result

SendSmsResult

短信发送结果。

url

string

存储发送短信的URI。

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

参数名

类型

必填

说明

pdu

Array<number>

短信送达报告。

## SendSmsResult 短信发送结果。

参数名

说明

SEND_SMS_SUCCESS

0

发送短信成功。

SEND_SMS_FAILURE_UNKNOWN

1

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

SEND_SMS_FAILURE_RADIO_OFF

2

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

SEND_SMS_FAILURE_SERVICE_UNAVAILABLE

3

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