summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--telephony/java/com/android/internal/telephony/SMSDispatcher.java7
-rw-r--r--telephony/java/com/android/internal/telephony/SmsUsageMonitor.java31
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.