Home | History | Annotate | Download | only in telephony
      1 /*
      2 ** Copyright 2007, The Android Open Source Project
      3 **
      4 ** Licensed under the Apache License, Version 2.0 (the "License");
      5 ** you may not use this file except in compliance with the License.
      6 ** You may obtain a copy of the License at
      7 **
      8 **     http://www.apache.org/licenses/LICENSE-2.0
      9 **
     10 ** Unless required by applicable law or agreed to in writing, software
     11 ** distributed under the License is distributed on an "AS IS" BASIS,
     12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 ** See the License for the specific language governing permissions and
     14 ** limitations under the License.
     15 */
     16 
     17 package com.android.internal.telephony;
     18 
     19 import android.app.PendingIntent;
     20 import com.android.internal.telephony.SmsRawData;
     21 
     22 /** Interface for applications to access the ICC phone book.
     23  *
     24  * <p>The following code snippet demonstrates a static method to
     25  * retrieve the ISms interface from Android:</p>
     26  * <pre>private static ISms getSmsInterface()
     27             throws DeadObjectException {
     28     IServiceManager sm = ServiceManagerNative.getDefault();
     29     ISms ss;
     30     ss = ISms.Stub.asInterface(sm.getService("isms"));
     31     return ss;
     32 }
     33  * </pre>
     34  */
     35 
     36 interface ISms {
     37     /**
     38      * Retrieves all messages currently stored on ICC.
     39      *
     40      * @return list of SmsRawData of all sms on ICC
     41      */
     42      List<SmsRawData> getAllMessagesFromIccEf();
     43 
     44     /**
     45      * Update the specified message on the ICC.
     46      *
     47      * @param messageIndex record index of message to update
     48      * @param newStatus new message status (STATUS_ON_ICC_READ,
     49      *                  STATUS_ON_ICC_UNREAD, STATUS_ON_ICC_SENT,
     50      *                  STATUS_ON_ICC_UNSENT, STATUS_ON_ICC_FREE)
     51      * @param pdu the raw PDU to store
     52      * @return success or not
     53      *
     54      */
     55      boolean updateMessageOnIccEf(int messageIndex, int newStatus,
     56             in byte[] pdu);
     57 
     58     /**
     59      * Copy a raw SMS PDU to the ICC.
     60      *
     61      * @param pdu the raw PDU to store
     62      * @param status message status (STATUS_ON_ICC_READ, STATUS_ON_ICC_UNREAD,
     63      *               STATUS_ON_ICC_SENT, STATUS_ON_ICC_UNSENT)
     64      * @return success or not
     65      *
     66      */
     67     boolean copyMessageToIccEf(int status, in byte[] pdu, in byte[] smsc);
     68 
     69     /**
     70      * Send a data SMS.
     71      *
     72      * @param smsc the SMSC to send the message through, or NULL for the
     73      *  default SMSC
     74      * @param data the body of the message to send
     75      * @param sentIntent if not NULL this <code>PendingIntent</code> is
     76      *  broadcast when the message is sucessfully sent, or failed.
     77      *  The result code will be <code>Activity.RESULT_OK<code> for success,
     78      *  or one of these errors:<br>
     79      *  <code>RESULT_ERROR_GENERIC_FAILURE</code><br>
     80      *  <code>RESULT_ERROR_RADIO_OFF</code><br>
     81      *  <code>RESULT_ERROR_NULL_PDU</code><br>
     82      *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> the sentIntent may include
     83      *  the extra "errorCode" containing a radio technology specific value,
     84      *  generally only useful for troubleshooting.<br>
     85      *  The per-application based SMS control checks sentIntent. If sentIntent
     86      *  is NULL the caller will be checked against all unknown applicaitons,
     87      *  which cause smaller number of SMS to be sent in checking period.
     88      * @param deliveryIntent if not NULL this <code>PendingIntent</code> is
     89      *  broadcast when the message is delivered to the recipient.  The
     90      *  raw pdu of the status report is in the extended data ("pdu").
     91      */
     92     void sendData(in String destAddr, in String scAddr, in int destPort,
     93             in byte[] data, in PendingIntent sentIntent, in PendingIntent deliveryIntent);
     94 
     95     /**
     96      * Send an SMS.
     97      *
     98      * @param smsc the SMSC to send the message through, or NULL for the
     99      *  default SMSC
    100      * @param text the body of the message to send
    101      * @param sentIntent if not NULL this <code>PendingIntent</code> is
    102      *  broadcast when the message is sucessfully sent, or failed.
    103      *  The result code will be <code>Activity.RESULT_OK<code> for success,
    104      *  or one of these errors:<br>
    105      *  <code>RESULT_ERROR_GENERIC_FAILURE</code><br>
    106      *  <code>RESULT_ERROR_RADIO_OFF</code><br>
    107      *  <code>RESULT_ERROR_NULL_PDU</code><br>
    108      *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> the sentIntent may include
    109      *  the extra "errorCode" containing a radio technology specific value,
    110      *  generally only useful for troubleshooting.<br>
    111      *  The per-application based SMS control checks sentIntent. If sentIntent
    112      *  is NULL the caller will be checked against all unknown applications,
    113      *  which cause smaller number of SMS to be sent in checking period.
    114      * @param deliveryIntent if not NULL this <code>PendingIntent</code> is
    115      *  broadcast when the message is delivered to the recipient.  The
    116      *  raw pdu of the status report is in the extended data ("pdu").
    117      */
    118     void sendText(in String destAddr, in String scAddr, in String text,
    119             in PendingIntent sentIntent, in PendingIntent deliveryIntent);
    120 
    121     /**
    122      * Send a multi-part text based SMS.
    123      *
    124      * @param destinationAddress the address to send the message to
    125      * @param scAddress is the service center address or null to use
    126      *   the current default SMSC
    127      * @param parts an <code>ArrayList</code> of strings that, in order,
    128      *   comprise the original message
    129      * @param sentIntents if not null, an <code>ArrayList</code> of
    130      *   <code>PendingIntent</code>s (one for each message part) that is
    131      *   broadcast when the corresponding message part has been sent.
    132      *   The result code will be <code>Activity.RESULT_OK<code> for success,
    133      *   or one of these errors:
    134      *   <code>RESULT_ERROR_GENERIC_FAILURE</code>
    135      *   <code>RESULT_ERROR_RADIO_OFF</code>
    136      *   <code>RESULT_ERROR_NULL_PDU</code>.
    137      * @param deliveryIntents if not null, an <code>ArrayList</code> of
    138      *   <code>PendingIntent</code>s (one for each message part) that is
    139      *   broadcast when the corresponding message part has been delivered
    140      *   to the recipient.  The raw pdu of the status report is in the
    141      *   extended data ("pdu").
    142      */
    143     void sendMultipartText(in String destinationAddress, in String scAddress,
    144             in List<String> parts, in List<PendingIntent> sentIntents,
    145             in List<PendingIntent> deliveryIntents);
    146 
    147     /**
    148      * Enable reception of cell broadcast (SMS-CB) messages with the given
    149      * message identifier. Note that if two different clients enable the same
    150      * message identifier, they must both disable it for the device to stop
    151      * receiving those messages.
    152      *
    153      * @param messageIdentifier Message identifier as specified in TS 23.041
    154      * @return true if successful, false otherwise
    155      *
    156      * @see #disableCellBroadcast(int)
    157      */
    158     boolean enableCellBroadcast(int messageIdentifier);
    159 
    160     /**
    161      * Disable reception of cell broadcast (SMS-CB) messages with the given
    162      * message identifier. Note that if two different clients enable the same
    163      * message identifier, they must both disable it for the device to stop
    164      * receiving those messages.
    165      *
    166      * @param messageIdentifier Message identifier as specified in TS 23.041
    167      * @return true if successful, false otherwise
    168      *
    169      * @see #enableCellBroadcast(int)
    170      */
    171     boolean disableCellBroadcast(int messageIdentifier);
    172 
    173     /**
    174      * Enable reception of cell broadcast (SMS-CB) messages with the given
    175      * message identifier range. Note that if two different clients enable
    176      * a message identifier range, they must both disable it for the device
    177      * to stop receiving those messages.
    178      *
    179      * @param startMessageId first message identifier as specified in TS 23.041
    180      * @param endMessageId last message identifier as specified in TS 23.041
    181      * @return true if successful, false otherwise
    182      *
    183      * @see #disableCellBroadcastRange(int, int)
    184      */
    185     boolean enableCellBroadcastRange(int startMessageId, int endMessageId);
    186 
    187     /**
    188      * Disable reception of cell broadcast (SMS-CB) messages with the given
    189      * message identifier range. Note that if two different clients enable
    190      * a message identifier range, they must both disable it for the device
    191      * to stop receiving those messages.
    192      *
    193      * @param startMessageId first message identifier as specified in TS 23.041
    194      * @param endMessageId last message identifier as specified in TS 23.041
    195      * @return true if successful, false otherwise
    196      *
    197      * @see #enableCellBroadcastRange(int, int)
    198      */
    199     boolean disableCellBroadcastRange(int startMessageId, int endMessageId);
    200 
    201 }
    202