public
class
SmsMessage
extends Object
java.lang.Object | |
↳ | android.telephony.SmsMessage |
A Short Message Service message.
See also:
Nested classes | |
---|---|
enum |
SmsMessage.MessageClass
SMS Class enumeration. |
class |
SmsMessage.SubmitPdu
|
Constants | |
---|---|
int |
ENCODING_16BIT
|
int |
ENCODING_7BIT
|
int |
ENCODING_8BIT
|
int |
ENCODING_UNKNOWN
User data text encoding code unit size |
int |
MAX_USER_DATA_BYTES
The maximum number of payload bytes per message |
int |
MAX_USER_DATA_BYTES_WITH_HEADER
The maximum number of payload bytes per message if a user data header is present. |
int |
MAX_USER_DATA_SEPTETS
The maximum number of payload septets per message |
int |
MAX_USER_DATA_SEPTETS_WITH_HEADER
The maximum number of payload septets per message if a user data header is present. |
Public methods | |
---|---|
static
int[]
|
calculateLength(CharSequence msgBody, boolean use7bitOnly)
Calculates the number of SMS's required to encode the message body and the number of characters remaining until the next message. |
static
int[]
|
calculateLength(String messageBody, boolean use7bitOnly)
Calculates the number of SMS's required to encode the message body and the number of characters remaining until the next message, given the current encoding. |
static
SmsMessage
|
createFromPdu(byte[] pdu)
This method was deprecated
in API level 23.
Use |
static
SmsMessage
|
createFromPdu(byte[] pdu, String format)
Create an SmsMessage from a raw PDU with the specified message format. |
String
|
getDisplayMessageBody()
Returns the message body, or email message body if this message was from an email gateway. |
String
|
getDisplayOriginatingAddress()
Returns the originating address, or email from address if this message was from an email gateway. |
String
|
getEmailBody()
|
String
|
getEmailFrom()
|
int
|
getIndexOnIcc()
Returns the record index of the message on the ICC (1-based index). |
int
|
getIndexOnSim()
This method was deprecated in API level 4. Use getIndexOnIcc instead. |
String
|
getMessageBody()
Returns the message body as a String, if it exists and is text based. |
SmsMessage.MessageClass
|
getMessageClass()
Returns the class of this message. |
String
|
getOriginatingAddress()
Returns the originating address (sender) of this SMS message in String form or null if unavailable |
byte[]
|
getPdu()
Returns the raw PDU for the message. |
int
|
getProtocolIdentifier()
Get protocol identifier. |
String
|
getPseudoSubject()
Unofficial convention of a subject line enclosed in parens empty string if not present |
String
|
getServiceCenterAddress()
Returns the address of the SMS service center that relayed this message or null if there is none. |
int
|
getStatus()
GSM: For an SMS-STATUS-REPORT message, this returns the status field from the status report. |
int
|
getStatusOnIcc()
Returns the status of the message on the ICC (read, unread, sent, unsent). |
int
|
getStatusOnSim()
This method was deprecated in API level 4. Use getStatusOnIcc instead. |
static
SmsMessage.SubmitPdu
|
getSubmitPdu(String scAddress, String destinationAddress, String message, boolean statusReportRequested)
Get an SMS-SUBMIT PDU for a destination address and a message. |
static
SmsMessage.SubmitPdu
|
getSubmitPdu(String scAddress, String destinationAddress, short destinationPort, byte[] data, boolean statusReportRequested)
Get an SMS-SUBMIT PDU for a data message to a destination address & port. |
static
int
|
getTPLayerLengthForPDU(String pdu)
Get the TP-Layer-Length for the given SMS-SUBMIT PDU Basically, the length in bytes (not hex chars) less the SMSC header FIXME: This method is only used by a CTS test case that isn't run on CDMA devices. |
long
|
getTimestampMillis()
Returns the service centre timestamp in currentTimeMillis() format |
byte[]
|
getUserData()
returns the user data section minus the user data header if one was present. |
boolean
|
isCphsMwiMessage()
Returns true for CPHS MWI toggle message. |
boolean
|
isEmail()
Returns true if message is an email. |
boolean
|
isMWIClearMessage()
returns true if this message is a CPHS voicemail / message waiting indicator (MWI) clear message |
boolean
|
isMWISetMessage()
returns true if this message is a CPHS voicemail / message waiting indicator (MWI) set message |
boolean
|
isMwiDontStore()
returns true if this message is a "Message Waiting Indication Group: Discard Message" notification and should not be stored. |
boolean
|
isReplace()
See TS 23.040 9.2.3.9 returns true if this is a "replace short message" SMS |
boolean
|
isReplyPathPresent()
Returns true iff the |
boolean
|
isStatusReportMessage()
Return true iff the message is a SMS-STATUS-REPORT message. |
Inherited methods | |
---|---|
From
class
java.lang.Object
|
int ENCODING_UNKNOWN
User data text encoding code unit size
Constant Value: 0 (0x00000000)
int MAX_USER_DATA_BYTES
The maximum number of payload bytes per message
Constant Value: 140 (0x0000008c)
int MAX_USER_DATA_BYTES_WITH_HEADER
The maximum number of payload bytes per message if a user data header is present. This assumes the header only contains the CONCATENATED_8_BIT_REFERENCE element.
Constant Value: 134 (0x00000086)
int MAX_USER_DATA_SEPTETS
The maximum number of payload septets per message
Constant Value: 160 (0x000000a0)
int MAX_USER_DATA_SEPTETS_WITH_HEADER
The maximum number of payload septets per message if a user data header is present. This assumes the header only contains the CONCATENATED_8_BIT_REFERENCE element.
Constant Value: 153 (0x00000099)
int[] calculateLength (CharSequence msgBody, boolean use7bitOnly)
Calculates the number of SMS's required to encode the message body and the number of characters remaining until the next message.
Parameters | |
---|---|
msgBody |
CharSequence :
the message to encode |
use7bitOnly |
boolean :
if true, characters that are not part of the
radio-specific 7-bit encoding are counted as single
space chars. If false, and if the messageBody contains
non-7-bit encodable characters, length is calculated
using a 16-bit encoding. |
Returns | |
---|---|
int[] |
an int[4] with int[0] being the number of SMS's required, int[1] the number of code units used, and int[2] is the number of code units remaining until the next message. int[3] is an indicator of the encoding code unit size (see the ENCODING_* definitions in SmsConstants) |
int[] calculateLength (String messageBody, boolean use7bitOnly)
Calculates the number of SMS's required to encode the message body and the number of characters remaining until the next message, given the current encoding.
Parameters | |
---|---|
messageBody |
String :
the message to encode |
use7bitOnly |
boolean :
if true, characters that are not part of the radio
specific (GSM / CDMA) alphabet encoding are converted to as a
single space characters. If false, a messageBody containing
non-GSM or non-CDMA alphabet characters are encoded using
16-bit encoding. |
Returns | |
---|---|
int[] |
an int[4] with int[0] being the number of SMS's required, int[1] the number of code units used, and int[2] is the number of code units remaining until the next message. int[3] is the encoding type that should be used for the message. |
SmsMessage createFromPdu (byte[] pdu)
This method was deprecated
in API level 23.
Use createFromPdu(byte[], String)
instead.
Create an SmsMessage from a raw PDU. Guess format based on Voice
technology first, if it fails use other format.
All applications which handle
incoming SMS messages by processing the SMS_RECEIVED_ACTION
broadcast
intent must now pass the new format
String extra from the intent
into the new method createFromPdu(byte[], String)
which takes an
extra format parameter. This is required in order to correctly decode the PDU on
devices that require support for both 3GPP and 3GPP2 formats at the same time,
such as dual-mode GSM/CDMA and CDMA/LTE phones.
Parameters | |
---|---|
pdu |
byte
|
Returns | |
---|---|
SmsMessage |
SmsMessage createFromPdu (byte[] pdu, String format)
Create an SmsMessage from a raw PDU with the specified message format. The
message format is passed in the
SMS_RECEIVED_ACTION
as the format
String extra, and will be either "3gpp" for GSM/UMTS/LTE messages in 3GPP format
or "3gpp2" for CDMA/LTE messages in 3GPP2 format.
Parameters | |
---|---|
pdu |
byte :
the message PDU from the
SMS_RECEIVED_ACTION intent |
format |
String :
the format extra from the
SMS_RECEIVED_ACTION intent
|
Returns | |
---|---|
SmsMessage |
String getDisplayMessageBody ()
Returns the message body, or email message body if this message was from an email gateway. Returns null if message body unavailable.
Returns | |
---|---|
String |
String getDisplayOriginatingAddress ()
Returns the originating address, or email from address if this message was from an email gateway. Returns null if originating address unavailable.
Returns | |
---|---|
String |
String getEmailBody ()
Returns | |
---|---|
String |
if isEmail() is true, body of the email sent through the gateway. null otherwise |
String getEmailFrom ()
Returns | |
---|---|
String |
if isEmail() is true, email from address of email sent through the gateway. null otherwise |
int getIndexOnIcc ()
Returns the record index of the message on the ICC (1-based index).
Returns | |
---|---|
int |
the record index of the message on the ICC, or -1 if this SmsMessage was not created from a ICC SMS EF record. |
int getIndexOnSim ()
This method was deprecated
in API level 4.
Use getIndexOnIcc instead.
Returns the record index of the message on the SIM (1-based index).
Returns | |
---|---|
int |
the record index of the message on the SIM, or -1 if this SmsMessage was not created from a SIM SMS EF record. |
String getMessageBody ()
Returns the message body as a String, if it exists and is text based.
Returns | |
---|---|
String |
message body is there is one, otherwise null |
SmsMessage.MessageClass getMessageClass ()
Returns the class of this message.
Returns | |
---|---|
SmsMessage.MessageClass |
String getOriginatingAddress ()
Returns the originating address (sender) of this SMS message in String form or null if unavailable
Returns | |
---|---|
String |
byte[] getPdu ()
Returns the raw PDU for the message.
Returns | |
---|---|
byte[] |
the raw PDU for the message. |
int getProtocolIdentifier ()
Get protocol identifier.
Returns | |
---|---|
int |
String getPseudoSubject ()
Unofficial convention of a subject line enclosed in parens empty string if not present
Returns | |
---|---|
String |
String getServiceCenterAddress ()
Returns the address of the SMS service center that relayed this message or null if there is none.
Returns | |
---|---|
String |
int getStatus ()
GSM: For an SMS-STATUS-REPORT message, this returns the status field from the status report. This field indicates the status of a previously submitted SMS, if requested. See TS 23.040, 9.2.3.15 TP-Status for a description of values. CDMA: For not interfering with status codes from GSM, the value is shifted to the bits 31-16. The value is composed of an error class (bits 25-24) and a status code (bits 23-16). Possible codes are described in C.S0015-B, v2.0, 4.5.21.
Returns | |
---|---|
int |
0 indicates the previously sent message was received. See TS 23.040, 9.9.2.3.15 and C.S0015-B, v2.0, 4.5.21 for a description of other possible values. |
int getStatusOnIcc ()
Returns the status of the message on the ICC (read, unread, sent, unsent).
Returns | |
---|---|
int |
the status of the message on the ICC. These are: SmsManager.STATUS_ON_ICC_FREE SmsManager.STATUS_ON_ICC_READ SmsManager.STATUS_ON_ICC_UNREAD SmsManager.STATUS_ON_ICC_SEND SmsManager.STATUS_ON_ICC_UNSENT |
int getStatusOnSim ()
This method was deprecated
in API level 4.
Use getStatusOnIcc instead.
Returns the status of the message on the SIM (read, unread, sent, unsent).
Returns | |
---|---|
int |
the status of the message on the SIM. These are: SmsManager.STATUS_ON_SIM_FREE SmsManager.STATUS_ON_SIM_READ SmsManager.STATUS_ON_SIM_UNREAD SmsManager.STATUS_ON_SIM_SEND SmsManager.STATUS_ON_SIM_UNSENT |
SmsMessage.SubmitPdu getSubmitPdu (String scAddress, String destinationAddress, String message, boolean statusReportRequested)
Get an SMS-SUBMIT PDU for a destination address and a message. This method will not attempt to use any GSM national language 7 bit encodings.
Parameters | |
---|---|
scAddress |
String :
Service Centre address. Null means use default. |
destinationAddress |
String
|
message |
String
|
statusReportRequested |
boolean
|
Returns | |
---|---|
SmsMessage.SubmitPdu |
a SubmitPdu containing the encoded SC
address, if applicable, and the encoded message.
Returns null on encode error.
|
SmsMessage.SubmitPdu getSubmitPdu (String scAddress, String destinationAddress, short destinationPort, byte[] data, boolean statusReportRequested)
Get an SMS-SUBMIT PDU for a data message to a destination address & port. This method will not attempt to use any GSM national language 7 bit encodings.
Parameters | |
---|---|
scAddress |
String :
Service Centre address. null == use default |
destinationAddress |
String :
the address of the destination for the message |
destinationPort |
short :
the port to deliver the message to at the
destination |
data |
byte :
the data for the message |
statusReportRequested |
boolean
|
Returns | |
---|---|
SmsMessage.SubmitPdu |
a SubmitPdu containing the encoded SC
address, if applicable, and the encoded message.
Returns null on encode error.
|
int getTPLayerLengthForPDU (String pdu)
Get the TP-Layer-Length for the given SMS-SUBMIT PDU Basically, the length in bytes (not hex chars) less the SMSC header FIXME: This method is only used by a CTS test case that isn't run on CDMA devices. We should probably deprecate it and remove the obsolete test case.
Parameters | |
---|---|
pdu |
String
|
Returns | |
---|---|
int |
long getTimestampMillis ()
Returns the service centre timestamp in currentTimeMillis() format
Returns | |
---|---|
long |
byte[] getUserData ()
returns the user data section minus the user data header if one was present.
Returns | |
---|---|
byte[] |
boolean isCphsMwiMessage ()
Returns true for CPHS MWI toggle message.
Returns | |
---|---|
boolean |
true if this is a CPHS MWI toggle message See CPHS 4.2 section B.4.2 |
boolean isEmail ()
Returns true if message is an email.
Returns | |
---|---|
boolean |
true if this message came through an email gateway and email sender / subject / parsed body are available |
boolean isMWIClearMessage ()
returns true if this message is a CPHS voicemail / message waiting indicator (MWI) clear message
Returns | |
---|---|
boolean |
boolean isMWISetMessage ()
returns true if this message is a CPHS voicemail / message waiting indicator (MWI) set message
Returns | |
---|---|
boolean |
boolean isMwiDontStore ()
returns true if this message is a "Message Waiting Indication Group: Discard Message" notification and should not be stored.
Returns | |
---|---|
boolean |
boolean isReplace ()
See TS 23.040 9.2.3.9 returns true if this is a "replace short message" SMS
Returns | |
---|---|
boolean |
boolean isReplyPathPresent ()
Returns true iff the TP-Reply-Path
bit is set in
this message.
Returns | |
---|---|
boolean |
boolean isStatusReportMessage ()
Return true iff the message is a SMS-STATUS-REPORT message.
Returns | |
---|---|
boolean |