Merge "Send and download MMS via content provider instead of PDU bytes." into lmp-dev
diff --git a/api/current.txt b/api/current.txt
index 1959c79b..9686baf 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -25737,6 +25737,8 @@
public static final class Telephony.Mms.Intents {
field public static final java.lang.String CONTENT_CHANGED_ACTION = "android.intent.action.CONTENT_CHANGED";
field public static final java.lang.String DELETED_CONTENTS = "deleted_contents";
+ field public static final java.lang.String EXTRA_MMS_CONTENT_URI = "android.provider.Telephony.extra.MMS_CONTENT_URI";
+ field public static final java.lang.String EXTRA_MMS_LOCATION_URL = "android.provider.Telephony.extra.MMS_LOCATION_URL";
field public static final java.lang.String MMS_DOWNLOAD_ACTION = "android.provider.Telephony.MMS_DOWNLOAD";
field public static final java.lang.String MMS_SEND_ACTION = "android.provider.Telephony.MMS_SEND";
}
@@ -28864,16 +28866,16 @@
public final class SmsManager {
method public java.util.ArrayList<java.lang.String> divideMessage(java.lang.String);
- method public void downloadMultimediaMessage(java.lang.String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
+ method public void downloadMultimediaMessage(android.content.Context, java.lang.String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
method public android.os.Bundle getCarrierConfigValues();
method public static android.telephony.SmsManager getDefault();
method public void injectSmsPdu(byte[], java.lang.String, android.app.PendingIntent);
method public void sendDataMessage(java.lang.String, java.lang.String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
- method public void sendMultimediaMessage(android.net.Uri, java.lang.String, android.os.Bundle, android.app.PendingIntent);
+ method public void sendMultimediaMessage(android.content.Context, android.net.Uri, java.lang.String, android.os.Bundle, android.app.PendingIntent);
method public void sendMultipartTextMessage(java.lang.String, java.lang.String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
method public void sendTextMessage(java.lang.String, java.lang.String, java.lang.String, android.app.PendingIntent, android.app.PendingIntent);
- method public void updateMmsDownloadStatus(int, byte[]);
- method public void updateMmsSendStatus(int, boolean);
+ method public void updateMmsDownloadStatus(android.content.Context, int, int, android.net.Uri);
+ method public void updateMmsSendStatus(android.content.Context, int, byte[], int, android.net.Uri);
method public void updateSmsSendStatus(int, boolean);
field public static final java.lang.String EXTRA_MMS_DATA = "android.telephony.extra.MMS_DATA";
field public static final java.lang.String MMS_CONFIG_ALIAS_ENABLED = "aliasEnabled";
@@ -28908,6 +28910,7 @@
field public static final int MMS_ERROR_HTTP_FAILURE = 4; // 0x4
field public static final int MMS_ERROR_INVALID_APN = 2; // 0x2
field public static final int MMS_ERROR_IO_ERROR = 5; // 0x5
+ field public static final int MMS_ERROR_RETRY = 6; // 0x6
field public static final int MMS_ERROR_UNABLE_CONNECT_MMS = 3; // 0x3
field public static final int MMS_ERROR_UNSPECIFIED = 1; // 0x1
field public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
diff --git a/services/core/java/com/android/server/MmsServiceBroker.java b/services/core/java/com/android/server/MmsServiceBroker.java
index b452a38..0fb80c9 100644
--- a/services/core/java/com/android/server/MmsServiceBroker.java
+++ b/services/core/java/com/android/server/MmsServiceBroker.java
@@ -219,15 +219,16 @@
}
@Override
- public void updateMmsSendStatus(int messageRef, boolean success) throws RemoteException {
+ public void updateMmsSendStatus(int messageRef, byte[] pdu, int status)
+ throws RemoteException {
enforceCarrierPrivilege();
- getServiceGuarded().updateMmsSendStatus(messageRef, success);
+ getServiceGuarded().updateMmsSendStatus(messageRef, pdu, status);
}
@Override
- public void updateMmsDownloadStatus(int messageRef, byte[] pdu) throws RemoteException {
+ public void updateMmsDownloadStatus(int messageRef, int status) throws RemoteException {
enforceCarrierPrivilege();
- getServiceGuarded().updateMmsDownloadStatus(messageRef, pdu);
+ getServiceGuarded().updateMmsDownloadStatus(messageRef, status);
}
@Override
diff --git a/telephony/java/com/android/internal/telephony/IMms.aidl b/telephony/java/com/android/internal/telephony/IMms.aidl
index 4337012..ebfefd1 100644
--- a/telephony/java/com/android/internal/telephony/IMms.aidl
+++ b/telephony/java/com/android/internal/telephony/IMms.aidl
@@ -62,24 +62,37 @@
/**
* Update the status of a pending (send-by-IP) MMS message handled by the carrier app.
- * If the carrier app fails to send this message, it would be resent via carrier network.
+ * If the carrier app fails to send this message, it may be resent via carrier network
+ * depending on the status code.
+ *
+ * The caller should have carrier privileges.
+ * @see android.telephony.TelephonyManager.hasCarrierPrivileges
*
* @param messageRef the reference number of the MMS message.
- * @param success True if and only if the message was sent successfully. If its value is
- * false, this message should be resent via carrier network
+ * @param pdu non-empty (contains the SendConf PDU) if the message was sent successfully,
+ * otherwise, this param should be null.
+ * @param status send status. It can be Activity.RESULT_OK or one of the MMS error codes.
+ * If status is Activity.RESULT_OK, the MMS was sent successfully.
+ * If status is MMS_ERROR_RETRY, this message would be resent via carrier
+ * network. The message will not be resent for other MMS error statuses.
*/
- void updateMmsSendStatus(int messageRef, boolean success);
+ void updateMmsSendStatus(int messageRef, in byte[] pdu, in int status);
/**
* Update the status of a pending (download-by-IP) MMS message handled by the carrier app.
- * If the carrier app fails to download this message, it would be re-downloaded via carrier
- * network.
+ * If the carrier app fails to download this message, it may be re-downloaded via carrier
+ * network depending on the status code.
+ *
+ * The caller should have carrier privileges.
+ * @see android.telephony.TelephonyManager.hasCarrierPrivileges
*
* @param messageRef the reference number of the MMS message.
- * @param pdu non-empty if downloaded successfully, otherwise, it is empty and the message
- * will be downloaded via carrier network
+ * @param status download status. It can be Activity.RESULT_OK or one of the MMS error codes.
+ * If status is Activity.RESULT_OK, the MMS was downloaded successfully.
+ * If status is MMS_ERROR_RETRY, this message would be re-downloaded via carrier
+ * network. The message will not be re-downloaded for other MMS error statuses.
*/
- void updateMmsDownloadStatus(int messageRef, in byte[] pdu);
+ void updateMmsDownloadStatus(int messageRef, in int status);
/**
* Get carrier-dependent configuration values.