短信服務(wù)

2024-01-23 16:39 更新

短信服務(wù)提供了管理短信的一些基礎(chǔ)能力,包括創(chuàng)建、發(fā)送短信,獲取、設(shè)置發(fā)送短信的默認(rèn)SIM卡槽ID,獲取、設(shè)置短信服務(wù)中心(SMSC)地址,以及檢查當(dāng)前設(shè)備是否具備短信發(fā)送和接收能力等。

說明

本模塊首批接口從API version 6開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

導(dǎo)入模塊

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

sms.createMessage

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

根據(jù)協(xié)議數(shù)據(jù)單元(PDU)和指定的短信協(xié)議創(chuàng)建短信實(shí)例。使用callback異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.SmsMms

參數(shù):

參數(shù)名

類型

必填

說明

pdu

Array<number>

協(xié)議數(shù)據(jù)單元,從收到的信息中獲取。

specification

string

短信協(xié)議類型。

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

- 3gpp2:表示CDMA SMS

callback

AsyncCallback<ShortMessage>

回調(diào)函數(shù)。

示例:

  1. const specification = '3gpp';
  2. // 以數(shù)組的形式顯示協(xié)議數(shù)據(jù)單元(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>

根據(jù)協(xié)議數(shù)據(jù)單元(PDU)和指定的短信協(xié)議創(chuàng)建短信實(shí)例。使用Promise異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.SmsMms

參數(shù):

參數(shù)名

類型

必填

說明

pdu

Array<number>

協(xié)議數(shù)據(jù)單元,從收到的信息中獲取。

specification

string

短信協(xié)議類型。

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

- 3gpp2:表示CDMA SMS

返回值:

類型

說明

Promise<ShortMessage>

以Promise形式返回創(chuàng)建的短信實(shí)例。

示例:

  1. const specification = '3gpp';
  2. // 以數(shù)組的形式顯示協(xié)議數(shù)據(jù)單元(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

發(fā)送短信。

需要權(quán)限:ohos.permission.SEND_MESSAGES

系統(tǒng)能力:SystemCapability.Telephony.SmsMms

參數(shù):

參數(shù)名

類型

必填

說明

options

SendMessageOptions

發(fā)送短信的參數(shù)和回調(diào),參考SendMessageOptions

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請(qǐng)參見ohos.telephony(電話子系統(tǒng))錯(cuò)誤碼錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

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 = '短信內(nèi)容';
  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

獲取發(fā)送短信的默認(rèn)SIM卡槽ID。使用callback異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.SmsMms

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<number>

回調(diào)函數(shù)。

- 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>

獲取發(fā)送短信的默認(rèn)SIM卡槽ID。使用Promise異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.SmsMms

返回值:

類型

說明

Promise<number>

以Promise形式返回發(fā)送短信的默認(rèn)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

檢查當(dāng)前設(shè)備是否具備短信發(fā)送和接收能力,該方法是同步方法。

系統(tǒng)能力:SystemCapability.Telephony.SmsMms

返回值:

類型

說明

boolean

- true:設(shè)備具備短信發(fā)送和接收能力。

- false:設(shè)備不具備短信發(fā)送和接收能力。

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

ShortMessage

短信實(shí)例。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Telephony.SmsMms。

名稱

類型

必填

說明

hasReplyPath

boolean

收到的短信是否包含“TP-Reply-Path”,默認(rèn)為false。

“TP-Reply-Path”:設(shè)備根據(jù)發(fā)送SMS消息的短消息中心進(jìn)行回復(fù)。

isReplaceMessage

boolean

收到的短信是否為“替換短信”,默認(rèn)為false。

“替換短信”有關(guān)詳細(xì)信息,參見 “3GPP TS 23.040 9.2.3.9”。

isSmsStatusReportMessage

boolean

當(dāng)前消息是否為“短信狀態(tài)報(bào)告”,默認(rèn)為false。

“短信狀態(tài)報(bào)告”是一種特定格式的短信,被用來從Service Center到Mobile Station傳送狀態(tài)報(bào)告。

messageClass

ShortMessageClass

短信類型。

pdu

Array<number>

SMS消息中的協(xié)議數(shù)據(jù)單元 (PDU)。

protocolId

number

發(fā)送短信時(shí)使用的協(xié)議標(biāo)識(shí)。

scAddress

string

短消息服務(wù)中心(SMSC)地址。

scTimestamp

number

SMSC時(shí)間戳。

status

number

SMS-STATUS-REPORT消息中的短信狀態(tài)指示短信服務(wù)中心(SMSC)發(fā)送的短信狀態(tài)。

visibleMessageBody

string

短信正文。

visibleRawAddress

string

發(fā)送者地址。

ShortMessageClass

短信類型。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Telephony.SmsMms。

名稱

說明

UNKNOWN

0

未知類型。

INSTANT_MESSAGE

1

即時(shí)消息,收到后立即顯示。

OPTIONAL_MESSAGE

2

存儲(chǔ)在設(shè)備或SIM卡上的短信。

SIM_MESSAGE

3

包含SIM卡信息的短信,需要存儲(chǔ)在SIM卡中。

FORWARD_MESSAGE

4

要轉(zhuǎn)發(fā)到另一臺(tái)設(shè)備的短信。

SendMessageOptions

發(fā)送短信的參數(shù)和回調(diào)。根據(jù)SendMessageOptions中的可選參數(shù)content的值判斷短信類型。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Telephony.SmsMms。

名稱

類型

必填

說明

slotId

number

用于發(fā)送短信的SIM卡槽ID:

- 0:卡槽1

- 1:卡槽2

destinationHost

string

短信的發(fā)送地址。

content

string | Array<number>

如果內(nèi)容是字符串,則這是一條文本短信。如果內(nèi)容是字節(jié)數(shù)組,則這是一條數(shù)據(jù)短信。

serviceCenter

string

短信中心地址。默認(rèn)使用SIM卡中的短信中心地址。

destinationPort

number

如果發(fā)送數(shù)據(jù)消息,destinationPort 是必需的。否則是可選的。

sendCallback

AsyncCallback<ISendShortMessageCallback>

短信發(fā)送結(jié)果回調(diào),返回短信發(fā)送的結(jié)果,參考ISendShortMessageCallback。

deliveryCallback

AsyncCallback<IDeliveryShortMessageCallback>

短信送達(dá)結(jié)果回調(diào),返回短信遞送報(bào)告,參考IDeliveryShortMessageCallback。

ISendShortMessageCallback

回調(diào)實(shí)例。返回短信發(fā)送結(jié)果、存儲(chǔ)已發(fā)送短信的URI和是否為長短信的最后一部分。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Telephony.SmsMms。

名稱

類型

必填

說明

isLastPart

boolean

指定這是否是長短信的最后一部分。true表示這是長短信的最后一部分,false表示不是。默認(rèn)為false。

result

SendSmsResult

短信發(fā)送結(jié)果。

url

string

存儲(chǔ)發(fā)送短信的URI。

IDeliveryShortMessageCallback

回調(diào)實(shí)例,返回短信送達(dá)報(bào)告。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Telephony.SmsMms。

名稱

類型

必填

說明

pdu

Array<number>

短信送達(dá)報(bào)告。

SendSmsResult

短信發(fā)送結(jié)果。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Telephony.SmsMms。

名稱

說明

SEND_SMS_SUCCESS

0

發(fā)送短信成功。

SEND_SMS_FAILURE_UNKNOWN

1

發(fā)送短信失敗,原因未知。

SEND_SMS_FAILURE_RADIO_OFF

2

發(fā)送短信失敗,原因?yàn)檎{(diào)制解調(diào)器關(guān)機(jī)。

SEND_SMS_FAILURE_SERVICE_UNAVAILABLE

3

發(fā)送短信失敗,原因?yàn)榫W(wǎng)絡(luò)不可用、不支持發(fā)送或接收短信。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)