SmsMessage.java revision 0825495a331bb44df395a0cdb79fab85e68db5d5
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2008 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage android.telephony.gsm;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcel;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.TelephonyManager;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.GsmAlphabet;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.EncodeException;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.SmsHeader;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.SmsMessageBase;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.SmsMessageBase.SubmitPduBase;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Arrays;
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.PHONE_TYPE_CDMA;
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * A Short Message Service message.
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated Replaced by android.telephony.SmsMessage that supports both GSM and CDMA.
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville@Deprecated
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class SmsMessage {
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final boolean LOCAL_DEBUG = true;
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final String LOG_TAG = "SMS";
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * SMS Class enumeration.
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * See TS 23.038.
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public enum MessageClass{
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        UNKNOWN, CLASS_0, CLASS_1, CLASS_2, CLASS_3;
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** Unknown encoding scheme (see TS 23.038)
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int ENCODING_UNKNOWN = 0;
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** 7-bit encoding scheme (see TS 23.038)
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int ENCODING_7BIT = 1;
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** 8-bit encoding scheme (see TS 23.038)
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int ENCODING_8BIT = 2;
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** 16-bit encoding scheme (see TS 23.038)
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int ENCODING_16BIT = 3;
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** The maximum number of payload bytes per message
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int MAX_USER_DATA_BYTES = 140;
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * The maximum number of payload bytes per message if a user data header
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * is present.  This assumes the header only contains the
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * CONCATENATED_8_BIT_REFERENCE element.
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @hide pending API Council approval to extend the public API
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int MAX_USER_DATA_BYTES_WITH_HEADER = 134;
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** The maximum number of payload septets per message
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int MAX_USER_DATA_SEPTETS = 160;
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * The maximum number of payload septets per message if a user data header
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * is present.  This assumes the header only contains the
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * CONCATENATED_8_BIT_REFERENCE element.
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153;
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** Contains actual SmsMessage. Only public for debugging and for framework layer.
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * {@hide}
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated public SmsMessageBase mWrappedSmsMessage;
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** @deprecated Use android.telephony.SmsMessage. */
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static class SubmitPdu {
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /** @deprecated Use android.telephony.SmsMessage. */
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        @Deprecated public byte[] encodedScAddress; // Null if not applicable.
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /** @deprecated Use android.telephony.SmsMessage. */
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        @Deprecated public byte[] encodedMessage;
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        //Constructor
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /** @deprecated Use android.telephony.SmsMessage. */
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        @Deprecated
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public SubmitPdu() {
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /** @deprecated Use android.telephony.SmsMessage.
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         * {@hide}
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         */
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        @Deprecated
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        protected SubmitPdu(SubmitPduBase spb) {
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            this.encodedMessage = spb.encodedMessage;
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            this.encodedScAddress = spb.encodedScAddress;
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /** @deprecated Use android.telephony.SmsMessage. */
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        @Deprecated
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public String toString() {
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return "SubmitPdu: encodedScAddress = "
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    + Arrays.toString(encodedScAddress)
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    + ", encodedMessage = "
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    + Arrays.toString(encodedMessage);
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // Constructor
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** @deprecated Use android.telephony.SmsMessage. */
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public SmsMessage() {
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        this(getSmsFacility());
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private SmsMessage(SmsMessageBase smb) {
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mWrappedSmsMessage = smb;
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Create an SmsMessage from a raw PDU.
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static SmsMessage createFromPdu(byte[] pdu) {
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SmsMessageBase wrappedMessage;
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int activePhone = TelephonyManager.getDefault().getCurrentPhoneType();
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (PHONE_TYPE_CDMA == activePhone) {
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            wrappedMessage = com.android.internal.telephony.cdma.SmsMessage.createFromPdu(pdu);
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            wrappedMessage = com.android.internal.telephony.gsm.SmsMessage.createFromPdu(pdu);
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return new SmsMessage(wrappedMessage);
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Get the TP-Layer-Length for the given SMS-SUBMIT PDU Basically, the
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * length in bytes (not hex chars) less the SMSC header
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int getTPLayerLengthForPDU(String pdu) {
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int activePhone = TelephonyManager.getDefault().getCurrentPhoneType();
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (PHONE_TYPE_CDMA == activePhone) {
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return com.android.internal.telephony.cdma.SmsMessage.getTPLayerLengthForPDU(pdu);
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return com.android.internal.telephony.gsm.SmsMessage.getTPLayerLengthForPDU(pdu);
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Calculates the number of SMS's required to encode the message body and
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * the number of characters remaining until the next message, given the
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * current encoding.
1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param messageBody the message to encode
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param use7bitOnly if true, characters that are not part of the GSM
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         alphabet are counted as a single space char.  If false, a
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         messageBody containing non-GSM alphabet characters is calculated
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         for 16-bit encoding.
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return an int[4] with int[0] being the number of SMS's required, int[1]
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         the number of code units used, and int[2] is the number of code
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         units remaining until the next message. int[3] is the encoding
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         type that should be used for the message.
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int[] calculateLength(CharSequence messageBody, boolean use7bitOnly) {
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        GsmAlphabet.TextEncodingDetails ted =
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                com.android.internal.telephony.gsm.SmsMessage
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        .calculateLength(messageBody, use7bitOnly);
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int ret[] = new int[4];
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ret[0] = ted.msgCount;
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ret[1] = ted.codeUnitCount;
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ret[2] = ted.codeUnitsRemaining;
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ret[3] = ted.codeUnitSize;
2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return ret;
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Calculates the number of SMS's required to encode the message body and
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * the number of characters remaining until the next message, given the
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * current encoding.
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param messageBody the message to encode
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param use7bitOnly if true, characters that are not part of the GSM
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         alphabet are counted as a single space char.  If false, a
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         messageBody containing non-GSM alphabet characters is calculated
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         for 16-bit encoding.
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return an int[4] with int[0] being the number of SMS's required, int[1]
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         the number of code units used, and int[2] is the number of code
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         units remaining until the next message. int[3] is the encoding
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         type that should be used for the message.
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int[] calculateLength(String messageBody, boolean use7bitOnly) {
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return calculateLength((CharSequence)messageBody, use7bitOnly);
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Get an SMS-SUBMIT PDU for a destination address and a message
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param scAddress Service Centre address.  Null means use default.
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return a <code>SubmitPdu</code> containing the encoded SC
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         address, if applicable, and the encoded message.
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         Returns null on encode error.
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @hide
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static SubmitPdu getSubmitPdu(String scAddress,
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            String destinationAddress, String message,
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            boolean statusReportRequested, byte[] header) {
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SubmitPduBase spb;
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int activePhone = TelephonyManager.getDefault().getCurrentPhoneType();
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (PHONE_TYPE_CDMA == activePhone) {
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            spb = com.android.internal.telephony.cdma.SmsMessage.getSubmitPdu(scAddress,
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    destinationAddress, message, statusReportRequested,
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    SmsHeader.fromByteArray(header));
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            spb = com.android.internal.telephony.gsm.SmsMessage.getSubmitPdu(scAddress,
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    destinationAddress, message, statusReportRequested, header);
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return new SubmitPdu(spb);
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Get an SMS-SUBMIT PDU for a destination address and a message
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param scAddress Service Centre address.  Null means use default.
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return a <code>SubmitPdu</code> containing the encoded SC
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         address, if applicable, and the encoded message.
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         Returns null on encode error.
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static SubmitPdu getSubmitPdu(String scAddress,
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            String destinationAddress, String message, boolean statusReportRequested) {
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SubmitPduBase spb;
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int activePhone = TelephonyManager.getDefault().getCurrentPhoneType();
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (PHONE_TYPE_CDMA == activePhone) {
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            spb = com.android.internal.telephony.cdma.SmsMessage.getSubmitPdu(scAddress,
2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    destinationAddress, message, statusReportRequested, null);
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            spb = com.android.internal.telephony.gsm.SmsMessage.getSubmitPdu(scAddress,
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    destinationAddress, message, statusReportRequested);
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return new SubmitPdu(spb);
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Get an SMS-SUBMIT PDU for a data message to a destination address &amp; port
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param scAddress Service Centre address. null == use default
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param destinationAddress the address of the destination for the message
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param destinationPort the port to deliver the message to at the
2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *        destination
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @param data the dat for the message
2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return a <code>SubmitPdu</code> containing the encoded SC
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         address, if applicable, and the encoded message.
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         Returns null on encode error.
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static SubmitPdu getSubmitPdu(String scAddress,
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            String destinationAddress, short destinationPort, byte[] data,
3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            boolean statusReportRequested) {
3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SubmitPduBase spb;
3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int activePhone = TelephonyManager.getDefault().getCurrentPhoneType();
3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (PHONE_TYPE_CDMA == activePhone) {
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            spb = com.android.internal.telephony.cdma.SmsMessage.getSubmitPdu(scAddress,
3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    destinationAddress, destinationPort, data, statusReportRequested);
3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            spb = com.android.internal.telephony.gsm.SmsMessage.getSubmitPdu(scAddress,
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    destinationAddress, destinationPort, data, statusReportRequested);
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return new SubmitPdu(spb);
3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the address of the SMS service center that relayed this message
3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * or null if there is none.
3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getServiceCenterAddress() {
3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getServiceCenterAddress();
3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the originating address (sender) of this SMS message in String
3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * form or null if unavailable
3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getOriginatingAddress() {
3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getOriginatingAddress();
3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the originating address, or email from address if this message
3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * was from an email gateway. Returns null if originating address
3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * unavailable.
3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getDisplayOriginatingAddress() {
3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getDisplayOriginatingAddress();
3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the message body as a String, if it exists and is text based.
3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return message body is there is one, otherwise null
3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getMessageBody() {
3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getMessageBody();
3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the class of this message.
3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public MessageClass getMessageClass() {
3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int index = mWrappedSmsMessage.getMessageClass().ordinal();
3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return MessageClass.values()[index];
3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the message body, or email message body if this message was from
3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * an email gateway. Returns null if message body unavailable.
3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getDisplayMessageBody() {
3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getDisplayMessageBody();
3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Unofficial convention of a subject line enclosed in parens empty string
3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * if not present
3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getPseudoSubject() {
3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getPseudoSubject();
3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the service centre timestamp in currentTimeMillis() format
3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public long getTimestampMillis() {
3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getTimestampMillis();
3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns true if message is an email.
4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return true if this message came through an email gateway and email
4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         sender / subject / parsed body are available
4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isEmail() {
4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isEmail();
4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     /**
4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return if isEmail() is true, body of the email sent through the gateway.
4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         null otherwise
4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getEmailBody() {
4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getEmailBody();
4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return if isEmail() is true, email from address of email sent through
4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         the gateway. null otherwise
4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String getEmailFrom() {
4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getEmailFrom();
4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Get protocol identifier.
4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getProtocolIdentifier() {
4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getProtocolIdentifier();
4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * See TS 23.040 9.2.3.9 returns true if this is a "replace short message" SMS
4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isReplace() {
4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isReplace();
4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns true for CPHS MWI toggle message.
4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return true if this is a CPHS MWI toggle message See CPHS 4.2 section B.4.2
4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isCphsMwiMessage() {
4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isCphsMwiMessage();
4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * returns true if this message is a CPHS voicemail / message waiting
4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * indicator (MWI) clear message
4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isMWIClearMessage() {
4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isMWIClearMessage();
4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * returns true if this message is a CPHS voicemail / message waiting
4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * indicator (MWI) set message
4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isMWISetMessage() {
4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isMWISetMessage();
4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * returns true if this message is a "Message Waiting Indication Group:
4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Discard Message" notification and should not be stored.
4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isMwiDontStore() {
4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isMwiDontStore();
4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * returns the user data section minus the user data header if one was present.
4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public byte[] getUserData() {
4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getUserData();
4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /* Not part of the SDK interface and only needed by specific classes:
5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville       protected SmsHeader getUserDataHeader()
5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    */
5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the raw PDU for the message.
5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return the raw PDU for the message.
5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public byte[] getPdu() {
5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getPdu();
5140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the status of the message on the SIM (read, unread, sent, unsent).
5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return the status of the message on the SIM.  These are:
5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_SIM_FREE
5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_SIM_READ
5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_SIM_UNREAD
5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_SIM_SEND
5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_SIM_UNSENT
5250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage and getStatusOnIcc instead.
5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getStatusOnSim() {
5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getStatusOnIcc();
5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the status of the message on the ICC (read, unread, sent, unsent).
5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return the status of the message on the ICC.  These are:
5360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_ICC_FREE
5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_ICC_READ
5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_ICC_UNREAD
5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_ICC_SEND
5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsManager.STATUS_ON_ICC_UNSENT
5410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
5420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @hide
5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getStatusOnIcc() {
5460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getStatusOnIcc();
5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the record index of the message on the SIM (1-based index).
5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return the record index of the message on the SIM, or -1 if this
5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsMessage was not created from a SIM SMS EF record.
5540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage and getIndexOnIcc instead.
5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getIndexOnSim() {
5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getIndexOnIcc();
5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns the record index of the message on the ICC (1-based index).
5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return the record index of the message on the ICC, or -1 if this
5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         SmsMessage was not created from a ICC SMS EF record.
5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @hide
5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getIndexOnIcc() {
5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getIndexOnIcc();
5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * GSM:
5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * For an SMS-STATUS-REPORT message, this returns the status field from
5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * the status report.  This field indicates the status of a previously
5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * submitted SMS, if requested.  See TS 23.040, 9.2.3.15 TP-Status for a
5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * description of values.
5800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * CDMA:
5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * For not interfering with status codes from GSM, the value is
5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * shifted to the bits 31-16.
5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * The value is composed of an error class (bits 25-24) and a status code (bits 23-16).
5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Possible codes are described in C.S0015-B, v2.0, 4.5.21.
5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *
5860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return 0 indicates the previously sent message was received.
5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         See TS 23.040, 9.9.2.3.15 and C.S0015-B, v2.0, 4.5.21
5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *         for a description of other possible values.
5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int getStatus() {
5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.getStatus();
5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Return true iff the message is a SMS-STATUS-REPORT message.
5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isStatusReportMessage() {
6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isStatusReportMessage();
6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Returns true iff the <code>TP-Reply-Path</code> bit is set in
6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * this message.
6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Deprecated
6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public boolean isReplyPathPresent() {
6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mWrappedSmsMessage.isReplyPathPresent();
6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /** This method returns the reference to a specific
6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     *  SmsMessage object, which is used for accessing its static methods.
6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @return Specific SmsMessage.
6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * @deprecated Use android.telephony.SmsMessage.
6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final SmsMessageBase getSmsFacility(){
6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        int activePhone = TelephonyManager.getDefault().getCurrentPhoneType();
6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (PHONE_TYPE_CDMA == activePhone) {
6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return new com.android.internal.telephony.cdma.SmsMessage();
6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } else {
6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return new com.android.internal.telephony.gsm.SmsMessage();
6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
629