aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhihai Xu <zhihaixu@google.com>2013-11-05 23:40:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-11-05 23:40:35 +0000
commit3162ee6dd59a205ce2f50bacc7793d59d33a5a81 (patch)
tree7e70792bb831e7e21c37fa2aafafb61b01058b61
parent69601e4456a458ccad67429cb7462e33d0a9ef13 (diff)
parent9382b17d503c107b38610b217ba7c93525be206a (diff)
downloadtelephony-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.java29
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);
+ }
}
}