diff options
| author | 2012-05-29 13:54:19 -0700 | |
|---|---|---|
| committer | 2012-05-29 13:54:19 -0700 | |
| commit | 9d820eccfc2ddbdc03680e22b9d4c4cac66a97b9 (patch) | |
| tree | d94fe600688764d715076abc3858b8207cb879b7 | |
| parent | de1ddd0f93fae6ba517d516993e7fb495424f574 (diff) | |
| parent | 8367627f3afd065a8d6b2f0131e0f30fa4fb53f7 (diff) | |
Merge "Allow apps with SEND_SMS_NO_CONFIRMATION to bypass short code check." into jb-dev
| -rw-r--r-- | telephony/java/com/android/internal/telephony/SMSDispatcher.java | 7 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/SmsUsageMonitor.java | 31 |
2 files changed, 6 insertions, 32 deletions
diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java index 28b729d962b0..41125dd119bd 100644 --- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java @@ -78,6 +78,10 @@ public abstract class SMSDispatcher extends Handler { public static final String RECEIVE_EMERGENCY_BROADCAST_PERMISSION = "android.permission.RECEIVE_EMERGENCY_BROADCAST"; + /** Permission required to send SMS to short codes without user confirmation. */ + private static final String SEND_SMS_NO_CONFIRMATION_PERMISSION = + "android.permission.SEND_SMS_NO_CONFIRMATION"; + /** Query projection for checking for duplicate message segments. */ private static final String[] PDU_PROJECTION = new String[] { "pdu" @@ -944,7 +948,8 @@ public abstract class SMSDispatcher extends Handler { * @return true if the destination is approved; false if user confirmation event was sent */ boolean checkDestination(SmsTracker tracker) { - if (mUsageMonitor.isApprovedShortCodeSender(tracker.mAppPackage)) { + if (mContext.checkCallingOrSelfPermission(SEND_SMS_NO_CONFIRMATION_PERMISSION) + == PackageManager.PERMISSION_GRANTED) { return true; // app is pre-approved to send to short codes } else { String countryIso = mTelephonyManager.getSimCountryIso(); diff --git a/telephony/java/com/android/internal/telephony/SmsUsageMonitor.java b/telephony/java/com/android/internal/telephony/SmsUsageMonitor.java index f40958dfb899..1804d97dee59 100644 --- a/telephony/java/com/android/internal/telephony/SmsUsageMonitor.java +++ b/telephony/java/com/android/internal/telephony/SmsUsageMonitor.java @@ -81,12 +81,6 @@ public class SmsUsageMonitor { private final HashMap<String, ArrayList<Long>> mSmsStamp = new HashMap<String, ArrayList<Long>>(); - /** - * Hash of package names that are allowed to send to short codes. - * TODO: persist this across reboots. - */ - private final HashSet<String> mApprovedShortCodeSenders = new HashSet<String>(); - /** Context for retrieving regexes from XML resource. */ private final Context mContext; @@ -248,9 +242,6 @@ public class SmsUsageMonitor { DEFAULT_SMS_CHECK_PERIOD); mSettingsObserverHandler = new SettingsObserverHandler(); - - // system MMS app is always allowed to send to short codes - mApprovedShortCodeSenders.add("com.android.mms"); } /** @@ -358,28 +349,6 @@ public class SmsUsageMonitor { } /** - * Return whether the app is approved to send to any short code. - * @param appName the package name of the app requesting to send an SMS - * @return true if the app is approved; false if we need to confirm short code destinations - */ - public boolean isApprovedShortCodeSender(String appName) { - synchronized (mApprovedShortCodeSenders) { - return mApprovedShortCodeSenders.contains(appName); - } - } - - /** - * Add app package name to the list of approved short code senders. - * @param appName the package name of the app to add - */ - public void addApprovedShortCodeSender(String appName) { - if (DBG) log("Adding " + appName + " to list of approved short code senders."); - synchronized (mApprovedShortCodeSenders) { - mApprovedShortCodeSenders.add(appName); - } - } - - /** * Check if the destination is a possible premium short code. * NOTE: the caller is expected to strip non-digits from the destination number with * {@link PhoneNumberUtils#extractNetworkPortion} before calling this method. |