summaryrefslogtreecommitdiffstats
path: root/telephony
diff options
context:
space:
mode:
authorJake Hamby <jhamby@google.com>2012-05-25 15:12:36 -0700
committerJake Hamby <jhamby@google.com>2012-05-25 15:16:33 -0700
commit8367627f3afd065a8d6b2f0131e0f30fa4fb53f7 (patch)
treeda78cbf61e40992424e59f3f6c03c115ea49b2b9 /telephony
parent18afc622c3d80713a6ffb91792cce399e1715bfb (diff)
downloadframeworks_base-8367627f3afd065a8d6b2f0131e0f30fa4fb53f7.zip
frameworks_base-8367627f3afd065a8d6b2f0131e0f30fa4fb53f7.tar.gz
frameworks_base-8367627f3afd065a8d6b2f0131e0f30fa4fb53f7.tar.bz2
Allow apps with SEND_SMS_NO_CONFIRMATION to bypass short code check.
Change SMSDispatcher to bypass SMS premium short code confirmation dialog when caller has "android.permission.SEND_SMS_NO_CONFIRMATION" permission (instead of checking package name against hardcoded list). This permission is only available to system apps or those signed with the same certificates as those in the system image. Bug: 6502817 Change-Id: I6098d448892cc5e842ba6dc10cf494295e7226af
Diffstat (limited to 'telephony')
-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.