summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCheuksan Wang <edwang@google.com>2015-04-24 21:39:01 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2015-04-24 21:40:18 +0000
commit2dbe575f14c52e817658ff66e1a60f8764938af6 (patch)
tree1089784039491d2498cff32566adf641b5f9b9f2
parent60452b2349d2e47498fcac9e7d8385d981ad849e (diff)
parentd78cb30b2244be989ba6566d6c72563d56780c04 (diff)
downloadandroid_packages_services_Mms-2dbe575f14c52e817658ff66e1a60f8764938af6.tar.gz
android_packages_services_Mms-2dbe575f14c52e817658ff66e1a60f8764938af6.tar.bz2
android_packages_services_Mms-2dbe575f14c52e817658ff66e1a60f8764938af6.zip
Merge "Fail SmsManager requests if SubId is not active." into m-wireless-dev
-rw-r--r--src/com/android/mms/service/MmsService.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/com/android/mms/service/MmsService.java b/src/com/android/mms/service/MmsService.java
index 8c31e71..17c4a34 100644
--- a/src/com/android/mms/service/MmsService.java
+++ b/src/com/android/mms/service/MmsService.java
@@ -184,8 +184,16 @@ public class MmsService extends Service implements MmsRequest.RequestManager {
throws RemoteException {
Log.d(TAG, "sendMessage");
enforceSystemUid();
+
// Make sure the subId is correct
subId = checkSubId(subId);
+
+ // Make sure the subId is active
+ if (!isActiveSubId(subId)) {
+ sendErrorInPendingIntent(sentIntent);
+ return;
+ }
+
final SendRequest request = new SendRequest(MmsService.this, subId, contentUri,
locationUrl, sentIntent, callingPkg, configOverrides);
@@ -205,8 +213,16 @@ public class MmsService extends Service implements MmsRequest.RequestManager {
PendingIntent downloadedIntent) throws RemoteException {
Log.d(TAG, "downloadMessage: " + MmsHttpClient.redactUrlForNonVerbose(locationUrl));
enforceSystemUid();
+
// Make sure the subId is correct
subId = checkSubId(subId);
+
+ // Make sure the subId is active
+ if (!isActiveSubId(subId)) {
+ sendErrorInPendingIntent(downloadedIntent);
+ return;
+ }
+
final DownloadRequest request = new DownloadRequest(MmsService.this, subId,
locationUrl, contentUri, downloadedIntent, callingPkg, configOverrides);
final String carrierMessagingServicePackage =
@@ -358,6 +374,25 @@ public class MmsService extends Service implements MmsRequest.RequestManager {
Log.d(TAG, "getAutoPersisting");
return getAutoPersistingPref();
}
+
+ /*
+ * @return true if the subId is active.
+ */
+ private boolean isActiveSubId(int subId) {
+ return SubscriptionManager.from(MmsService.this).isActiveSubId(subId);
+ }
+
+ /*
+ * Calls the pending intent with <code>MMS_ERROR_NO_DATA_NETWORK</code>.
+ */
+ private void sendErrorInPendingIntent(@Nullable PendingIntent intent) {
+ if (intent != null) {
+ try {
+ intent.send(SmsManager.MMS_ERROR_NO_DATA_NETWORK);
+ } catch (PendingIntent.CanceledException ex) {
+ }
+ }
+ }
};
// Running request queues, one thread per queue