OSDN Git Service

New SMS and MMS APIs and semantics (1/4)
authorYe Wen <ywen@google.com>
Wed, 9 Jul 2014 23:51:49 +0000 (16:51 -0700)
committerYe Wen <ywen@google.com>
Sat, 12 Jul 2014 18:41:28 +0000 (11:41 -0700)
API changes for SMS and MMS AIDLs

b/14095333

Change-Id: I42ab3db2dfa89ba3f8816d601f4c38a77c66ffa6

telephony/java/com/android/internal/telephony/IMms.aidl
telephony/java/com/android/internal/telephony/ISms.aidl

index 4da90a5..db93a4f 100644 (file)
@@ -17,6 +17,8 @@
 package com.android.internal.telephony;
 
 import android.app.PendingIntent;
+import android.content.ContentValues;
+import android.net.Uri;
 
 /**
  * Service interface to handle MMS API requests
@@ -25,25 +27,28 @@ interface IMms {
     /**
      * Send an MMS message
      *
+     * @param subId the SIM id
      * @param callingPkg the package name of the calling app
      * @param pdu the MMS message encoded in standard MMS PDU format
      * @param locationUrl the optional location url for where this message should be sent to
      * @param sentIntent if not NULL this <code>PendingIntent</code> is
      *  broadcast when the message is successfully sent, or failed
      */
-    void sendMessage(String callingPkg, in byte[] pdu, String locationUrl,
+    void sendMessage(long subId, String callingPkg, in byte[] pdu, String locationUrl,
             in PendingIntent sentIntent);
 
     /**
      * Download an MMS message using known location and transaction id
      *
+     * @param subId the SIM id
      * @param callingPkg the package name of the calling app
      * @param locationUrl the location URL of the MMS message to be downloaded, usually obtained
      *  from the MMS WAP push notification
      * @param downloadedIntent if not NULL this <code>PendingIntent</code> is
      *  broadcast when the message is downloaded, or the download is failed
      */
-    void downloadMessage(String callingPkg, String locationUrl, in PendingIntent downloadedIntent);
+    void downloadMessage(long subId, String callingPkg, String locationUrl,
+            in PendingIntent downloadedIntent);
 
     /**
      * Update the status of a pending (send-by-IP) MMS message handled by the carrier app.
@@ -65,4 +70,149 @@ interface IMms {
      *  will be downloaded via carrier network
      */
     void updateMmsDownloadStatus(int messageRef, in byte[] pdu);
+
+    /**
+     * Get carrier-dependent configuration value as boolean. For example, if multipart SMS
+     * is supported.
+     *
+     * @param name the configuration name
+     * @param defaultValue the default value if fail to find the name
+     */
+    boolean getCarrierConfigBoolean(String name, boolean defaultValue);
+
+    /**
+     * Get carrier-dependent configuration value as int. For example, the MMS message size limit.
+     *
+     * @param name the configuration name
+     * @param defaultValue the default value if fail to find the name
+     */
+    int getCarrierConfigInt(String name, int defaultValue);
+
+    /**
+     * Get carrier-dependent configuration value as String. For example, extra HTTP headers for
+     * MMS request.
+     *
+     * @param name the configuration name
+     * @param defaultValue the default value if fail to find the name
+     */
+    String getCarrierConfigString(String name, String defaultValue);
+
+    /**
+     * Set carrier-dependent configuration value as boolean. For example, if multipart SMS
+     * is supported.
+     *
+     * @param name the configuration name
+     * @param value the configuration value
+     */
+    void setCarrierConfigBoolean(String callingPkg, String name, boolean value);
+
+    /**
+     * Set carrier-dependent configuration value as int. For example, the MMS message size limit.
+     *
+     * @param name the configuration name
+     * @param value the configuration value
+     */
+    void setCarrierConfigInt(String callingPkg, String name, int value);
+
+    /**
+     * Set carrier-dependent configuration value as String. For example, extra HTTP headers for
+     * MMS request.
+     *
+     * @param name the configuration name
+     * @param value the configuration value
+     */
+    void setCarrierConfigString(String callingPkg, String name, String value);
+
+    /**
+     * Import a text message into system's SMS store
+     *
+     * @param callingPkg the calling app's package name
+     * @param address the destination address of the message
+     * @param type the type of the message
+     * @param text the message text
+     * @param timestampMillis the message timestamp in milliseconds
+     * @param seen if the message is seen
+     * @param read if the message is read
+     * @return the message URI, null if failed
+     */
+    Uri importTextMessage(String callingPkg, String address, int type, String text,
+            long timestampMillis, boolean seen, boolean read);
+
+    /**
+      * Import a multimedia message into system's MMS store
+      *
+      * @param callingPkg the package name of the calling app
+      * @param pdu the PDU of the message to import
+      * @param messageId the optional message id
+      * @param timestampSecs the message timestamp in seconds
+      * @param seen if the message is seen
+      * @param read if the message is read
+      * @return the message URI, null if failed
+      */
+    Uri importMultimediaMessage(String callingPkg, in byte[] pdu, String messageId,
+            long timestampSecs, boolean seen, boolean read);
+
+    /**
+     * Delete a system stored SMS or MMS message
+     *
+     * @param callingPkg the package name of the calling app
+     * @param messageUri the URI of the stored message
+     * @return true if deletion is successful, false otherwise
+     */
+    boolean deleteStoredMessage(String callingPkg, in Uri messageUri);
+
+    /**
+     * Delete a system stored SMS or MMS thread
+     *
+     * @param callingPkg the package name of the calling app
+     * @param conversationId the ID of the message conversation
+     * @return true if deletion is successful, false otherwise
+     */
+    boolean deleteStoredConversation(String callingPkg, long conversationId);
+
+    /**
+     * Update the status properties of a system stored SMS or MMS message, e.g.
+     * the read status of a message, etc.
+     *
+     * @param callingPkg the package name of the calling app
+     * @param messageUri the URI of the stored message
+     * @param statusValues a list of status properties in key-value pairs to update
+     * @return true if deletion is successful, false otherwise
+     */
+    boolean updateStoredMessageStatus(String callingPkg, in Uri messageUri,
+            in ContentValues statusValues);
+
+    /**
+     * Add a text message draft to system SMS store
+     *
+     * @param callingPkg the package name of the calling app
+     * @param address the destination address of message
+     * @param text the body of the message to send
+     * @return the URI of the stored draft message
+     */
+    Uri addTextMessageDraft(String callingPkg, String address, String text);
+
+    /**
+     * Add a multimedia message draft to system MMS store
+     *
+     * @param callingPkg the package name of the calling app
+     * @param pdu the PDU data of the draft MMS
+     * @return the URI of the stored draft message
+     */
+    Uri addMultimediaMessageDraft(String callingPkg, in byte[] pdu);
+
+    /**
+     * Send a system stored MMS message
+     *
+     * This is used for sending a previously sent, but failed-to-send, message or
+     * for sending a text message that has been stored as a draft.
+     *
+     * @param subId the SIM id
+     * @param callingPkg the package name of the calling app
+     * @param messageUri the URI of the stored message
+     * @param sentIntent if not NULL this <code>PendingIntent</code> is
+     *  broadcast when the message is successfully sent, or failed
+     */
+    void sendStoredMessage(long subId, String callingPkg, in Uri messageUri,
+            in PendingIntent sentIntent);
 }
index 53429b6..abbdc4a 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.internal.telephony;
 
 import android.app.PendingIntent;
+import android.net.Uri;
 import com.android.internal.telephony.SmsRawData;
 
 /** Interface for applications to access the ICC phone book.
@@ -466,7 +467,6 @@ interface ISms {
      */
     long getPreferredSmsSubscription();
 
-
     /**
      * Gets SMS format supported on IMS.  SMS over IMS format is
      * either 3GPP or 3GPP2.
@@ -491,12 +491,76 @@ interface ISms {
      */
     String getImsSmsFormatUsingSubId(long subId);
 
-
-
-
     /*
      * Get SMS prompt property,  enabled or not
      * @return true if enabled, false otherwise
      */
     boolean isSMSPromptEnabled();
+
+    /**
+     * Send a system stored text message.
+     *
+     * This is used for sending a previously sent, but failed-to-send, message or
+     * for sending a text message that has been stored as a draft.
+     *
+     * @param subId the SIM id.
+     * @param callingPkg the package name of the calling app
+     * @param messageUri the URI of the stored message
+     * @param scAddress is the service center address or null to use the current default SMSC
+     * @param sentIntent if not NULL this <code>PendingIntent</code> is
+     *  broadcast when the message is successfully sent, or failed.
+     *  The result code will be <code>Activity.RESULT_OK</code> for success,
+     *  or one of these errors:<br>
+     *  <code>RESULT_ERROR_GENERIC_FAILURE</code><br>
+     *  <code>RESULT_ERROR_RADIO_OFF</code><br>
+     *  <code>RESULT_ERROR_NULL_PDU</code><br>
+     *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> the sentIntent may include
+     *  the extra "errorCode" containing a radio technology specific value,
+     *  generally only useful for troubleshooting.<br>
+     *  The per-application based SMS control checks sentIntent. If sentIntent
+     *  is NULL the caller will be checked against all unknown applications,
+     *  which cause smaller number of SMS to be sent in checking period.
+     * @param deliveryIntent if not NULL this <code>PendingIntent</code> is
+     *  broadcast when the message is delivered to the recipient.  The
+     *  raw pdu of the status report is in the extended data ("pdu").
+     */
+    void sendStoredText(long subId, String callingPkg, in Uri messageUri, String scAddress,
+            in PendingIntent sentIntent, in PendingIntent deliveryIntent);
+
+    /**
+     * Send a system stored multi-part text message.
+     *
+     * This is used for sending a previously sent, but failed-to-send, message or
+     * for sending a text message that has been stored as a draft.
+     * The provided <code>PendingIntent</code> lists should match the part number of the
+     * divided text of the stored message by using <code>divideMessage</code>
+     *
+     * @param subId the SIM id.
+     * @param callingPkg the package name of the calling app
+     * @param messageUri the URI of the stored message
+     * @param scAddress is the service center address or null to use
+     *   the current default SMSC
+     * @param sentIntents if not null, an <code>ArrayList</code> of
+     *   <code>PendingIntent</code>s (one for each message part) that is
+     *   broadcast when the corresponding message part has been sent.
+     *   The result code will be <code>Activity.RESULT_OK</code> for success,
+     *   or one of these errors:<br>
+     *   <code>RESULT_ERROR_GENERIC_FAILURE</code><br>
+     *   <code>RESULT_ERROR_RADIO_OFF</code><br>
+     *   <code>RESULT_ERROR_NULL_PDU</code><br>
+     *   For <code>RESULT_ERROR_GENERIC_FAILURE</code> each sentIntent may include
+     *   the extra "errorCode" containing a radio technology specific value,
+     *   generally only useful for troubleshooting.<br>
+     *   The per-application based SMS control checks sentIntent. If sentIntent
+     *   is NULL the caller will be checked against all unknown applications,
+     *   which cause smaller number of SMS to be sent in checking period.
+     * @param deliveryIntents if not null, an <code>ArrayList</code> of
+     *   <code>PendingIntent</code>s (one for each message part) that is
+     *   broadcast when the corresponding message part has been delivered
+     *   to the recipient.  The raw pdu of the status report is in the
+     *   extended data ("pdu").
+     */
+    void sendStoredMultipartText(long subId, String callingPkg, in Uri messageUri,
+                String scAddress, in List<PendingIntent> sentIntents,
+                in List<PendingIntent> deliveryIntents);
 }