diff options
author | Zhihai Xu <zhihaixu@google.com> | 2013-11-05 23:40:34 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-11-05 23:40:35 +0000 |
commit | 3162ee6dd59a205ce2f50bacc7793d59d33a5a81 (patch) | |
tree | 7e70792bb831e7e21c37fa2aafafb61b01058b61 | |
parent | 69601e4456a458ccad67429cb7462e33d0a9ef13 (diff) | |
parent | 9382b17d503c107b38610b217ba7c93525be206a (diff) | |
download | telephony-3162ee6dd59a205ce2f50bacc7793d59d33a5a81.tar.gz |
Merge "add SMS write permission for bluetooth package to support MAP profile." into klp-dev
-rw-r--r-- | src/java/com/android/internal/telephony/SmsApplication.java | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/java/com/android/internal/telephony/SmsApplication.java b/src/java/com/android/internal/telephony/SmsApplication.java index dc0bf296a9..1c0b64a47c 100644 --- a/src/java/com/android/internal/telephony/SmsApplication.java +++ b/src/java/com/android/internal/telephony/SmsApplication.java @@ -46,6 +46,7 @@ import java.util.List; public final class SmsApplication { static final String LOG_TAG = "SmsApplication"; private static final String PHONE_PACKAGE_NAME = "com.android.phone"; + private static final String BLUETOOTH_PACKAGE_NAME = "com.android.bluetooth"; public static class SmsApplicationData { /** @@ -308,9 +309,9 @@ public final class SmsApplication { } } - // We can only verify the phone app's permissions from a privileged caller + // We can only verify the phone and BT app's permissions from a privileged caller if (updateIfNeeded) { - // Verify that the phone app has permissions + // Verify that the phone and BT app has permissions PackageManager packageManager = context.getPackageManager(); try { PackageInfo info = packageManager.getPackageInfo(PHONE_PACKAGE_NAME, 0); @@ -326,6 +327,20 @@ public final class SmsApplication { Rlog.e(LOG_TAG, "Phone package not found: " + PHONE_PACKAGE_NAME); applicationData = null; } + + try { + PackageInfo info = packageManager.getPackageInfo(BLUETOOTH_PACKAGE_NAME, 0); + int mode = appOps.checkOp(AppOpsManager.OP_WRITE_SMS, info.applicationInfo.uid, + BLUETOOTH_PACKAGE_NAME); + if (mode != AppOpsManager.MODE_ALLOWED) { + Rlog.e(LOG_TAG, BLUETOOTH_PACKAGE_NAME + " lost OP_WRITE_SMS: (fixing)"); + appOps.setMode(AppOpsManager.OP_WRITE_SMS, info.applicationInfo.uid, + BLUETOOTH_PACKAGE_NAME, AppOpsManager.MODE_ALLOWED); + } + } catch (NameNotFoundException e) { + // No BT app on this device + Rlog.e(LOG_TAG, "Bluetooth package not found: " + BLUETOOTH_PACKAGE_NAME); + } } } return applicationData; @@ -386,6 +401,16 @@ public final class SmsApplication { // No phone app on this device (unexpected, even for non-phone devices) Rlog.e(LOG_TAG, "Phone package not found: " + PHONE_PACKAGE_NAME); } + + // BT needs to always have this permission to write to the sms database + try { + PackageInfo info = packageManager.getPackageInfo(BLUETOOTH_PACKAGE_NAME, 0); + appOps.setMode(AppOpsManager.OP_WRITE_SMS, info.applicationInfo.uid, + BLUETOOTH_PACKAGE_NAME, AppOpsManager.MODE_ALLOWED); + } catch (NameNotFoundException e) { + // No BT app on this device + Rlog.e(LOG_TAG, "Bluetooth package not found: " + BLUETOOTH_PACKAGE_NAME); + } } } |