diff options
-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 28b729d..41125dd 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 f40958d..1804d97 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. |