From df3f6d6c4722a7acc8189e47d0499aaf618969f9 Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Wed, 30 Jan 2013 14:03:58 -0500 Subject: [PATCH] Migrate package notification controls to AppOps. We still show the [X] Show Notifications box in InstalledAppDetails for now, however the information should be mostly in sync with the AppOps screen. ("Mostly" because there's no way to register for changes to AppOp modes at present.) Change-Id: Ia5cdda26c140aed8ee7329caaeedac04b8cbd8f1 --- res/values/arrays.xml | 1 + src/com/android/settings/applications/AppOpsState.java | 3 ++- .../android/settings/applications/InstalledAppDetails.java | 5 +++-- .../android/settings/applications/ManageApplications.java | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 24e0fbb9c56..6c463bf46b6 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -573,6 +573,7 @@ Read calendar Write calendar Wi-Fi scan + Post notification diff --git a/src/com/android/settings/applications/AppOpsState.java b/src/com/android/settings/applications/AppOpsState.java index 40506874771..7573de3ecac 100644 --- a/src/com/android/settings/applications/AppOpsState.java +++ b/src/com/android/settings/applications/AppOpsState.java @@ -107,7 +107,8 @@ public class AppOpsState { ); public static final OpsTemplate DEVICE_TEMPLATE = new OpsTemplate( - new int[] { AppOpsManager.OP_VIBRATE } + new int[] { AppOpsManager.OP_VIBRATE, + AppOpsManager.OP_POST_NOTIFICATION } ); public static final OpsTemplate[] ALL_TEMPLATES = new OpsTemplate[] { diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index f3723f85113..86c9c099e14 100644 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -385,7 +385,8 @@ public class InstalledAppDetails extends Fragment ServiceManager.getService(Context.NOTIFICATION_SERVICE)); boolean enabled = true; // default on try { - enabled = nm.areNotificationsEnabledForPackage(mAppEntry.info.packageName); + enabled = nm.areNotificationsEnabledForPackage(mAppEntry.info.packageName, + mAppEntry.info.uid); } catch (android.os.RemoteException ex) { // this does not bode well } @@ -1263,7 +1264,7 @@ public class InstalledAppDetails extends Fragment ServiceManager.getService(Context.NOTIFICATION_SERVICE)); try { final boolean enable = mNotificationSwitch.isChecked(); - nm.setNotificationsEnabledForPackage(packageName, enabled); + nm.setNotificationsEnabledForPackage(packageName, mAppEntry.info.uid, enabled); } catch (android.os.RemoteException ex) { mNotificationSwitch.setChecked(!enabled); // revert } diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index c48f648ba32..a223e20aad8 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -1129,7 +1129,7 @@ public class ManageApplications extends Fragment implements ApplicationInfo app = apps.get(i); try { if (DEBUG) Log.v(TAG, "Enabling notifications: " + app.packageName); - nm.setNotificationsEnabledForPackage(app.packageName, true); + nm.setNotificationsEnabledForPackage(app.packageName, app.uid, true); } catch (android.os.RemoteException ex) { } if (!app.enabled) {