diff options
author | Cheuksan Wang <edwang@google.com> | 2015-04-24 21:39:01 +0000 |
---|---|---|
committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2015-04-24 21:40:18 +0000 |
commit | 2dbe575f14c52e817658ff66e1a60f8764938af6 (patch) | |
tree | 1089784039491d2498cff32566adf641b5f9b9f2 | |
parent | 60452b2349d2e47498fcac9e7d8385d981ad849e (diff) | |
parent | d78cb30b2244be989ba6566d6c72563d56780c04 (diff) | |
download | android_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.java | 35 |
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 |