diff options
author | Ye Wen <ywen@google.com> | 2016-03-28 14:29:57 -0700 |
---|---|---|
committer | Ye Wen <ywen@google.com> | 2016-03-28 14:39:02 -0700 |
commit | 4ec811e7484f8470885a45fd672875fd0e0c0143 (patch) | |
tree | 16044e6104019de6bc14f570ca4612c676c2a9fa | |
parent | a2adc692f6793f583d4497877eaafde4824eb50a (diff) | |
download | base-4ec811e7484f8470885a45fd672875fd0e0c0143.tar.gz |
Assign WRITE_SMS to UID 1001
The write permission check in telephony provider requires any packages
in UID 1001 to have WRITE_SMS AppOps permission. Instead of assigning
this to packages one by one, use the new AppOpsManager.setUidMode to
give permission to the UID.
b/27831867
Change-Id: I7a28d1ffe73339b9de23605fb0e4f0c857509996
-rw-r--r-- | src/java/com/android/internal/telephony/SmsApplication.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/SmsApplication.java b/src/java/com/android/internal/telephony/SmsApplication.java index 34fcba03b732..675d9431db10 100644 --- a/src/java/com/android/internal/telephony/SmsApplication.java +++ b/src/java/com/android/internal/telephony/SmsApplication.java @@ -32,6 +32,7 @@ import android.content.res.Resources; import android.net.Uri; import android.os.Binder; import android.os.Debug; +import android.os.Process; import android.os.UserHandle; import android.provider.Settings; import android.provider.Telephony; @@ -469,6 +470,11 @@ public final class SmsApplication { MMS_SERVICE_PACKAGE_NAME); assignWriteSmsPermissionToSystemApp(context, packageManager, appOps, TELEPHONY_PROVIDER_PACKAGE_NAME); + // Give WRITE_SMS AppOps permission to UID 1001 which contains multiple + // apps, all of them should be able to write to telephony provider. + // This is to allow the proxy package permission check in telephony provider + // to pass. + assignWriteSmsPermissionToSystemUid(appOps, Process.PHONE_UID); } } if (DEBUG_MULTIUSER) { @@ -555,6 +561,11 @@ public final class SmsApplication { MMS_SERVICE_PACKAGE_NAME); assignWriteSmsPermissionToSystemApp(context, packageManager, appOps, TELEPHONY_PROVIDER_PACKAGE_NAME); + // Give WRITE_SMS AppOps permission to UID 1001 which contains multiple + // apps, all of them should be able to write to telephony provider. + // This is to allow the proxy package permission check in telephony provider + // to pass. + assignWriteSmsPermissionToSystemUid(appOps, Process.PHONE_UID); if (DEBUG_MULTIUSER) { Log.i(LOG_TAG, "setDefaultApplicationInternal oldAppData=" + oldAppData); @@ -629,6 +640,10 @@ public final class SmsApplication { } + private static void assignWriteSmsPermissionToSystemUid(AppOpsManager appOps, int uid) { + appOps.setUidMode(AppOpsManager.OP_WRITE_SMS, uid, AppOpsManager.MODE_ALLOWED); + } + /** * Tracks package changes and ensures that the default SMS app is always configured to be the * preferred activity for SENDTO sms/mms intents. |