diff options
author | Dianne Hackborn <hackbod@google.com> | 2013-09-26 16:41:14 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-09-26 16:41:14 +0000 |
commit | c222f57b5c992fb661b7112a7cd5e5dbe1c6030c (patch) | |
tree | a2d010a91a52a6b44fce5061c593b5e1d80c3e7f /core/java/android | |
parent | c31f118825778cff15a1c1b9d1171f2ad178a013 (diff) | |
parent | 8828d3a153e28fe631edcd5145e6cc706e0b34c8 (diff) | |
download | frameworks_base-c222f57b5c992fb661b7112a7cd5e5dbe1c6030c.zip frameworks_base-c222f57b5c992fb661b7112a7cd5e5dbe1c6030c.tar.gz frameworks_base-c222f57b5c992fb661b7112a7cd5e5dbe1c6030c.tar.bz2 |
Merge "Fix issue #10919261: Don't clear OP_WRITE_SMS when resetting app prefs" into klp-dev
Diffstat (limited to 'core/java/android')
-rw-r--r-- | core/java/android/app/AppOpsManager.java | 75 |
1 files changed, 70 insertions, 5 deletions
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 055044b..dce8cab 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -453,27 +453,84 @@ public class AppOpsManager { AppOpsManager.MODE_ALLOWED, }; + /** + * This specifies whether each option is allowed to be reset + * when resetting all app preferences. Disable reset for + * app ops that are under strong control of some part of the + * system (such as OP_WRITE_SMS, which should be allowed only + * for whichever app is selected as the current SMS app). + */ + private static boolean[] sOpDisableReset = new boolean[] { + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, // OP_WRITE_SMS + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + }; + private static HashMap<String, Integer> sOpStrToOp = new HashMap<String, Integer>(); static { if (sOpToSwitch.length != _NUM_OP) { - throw new IllegalStateException("sOpStringLength " + sOpToSwitch.length + throw new IllegalStateException("sOpToSwitch length " + sOpToSwitch.length + " should be " + _NUM_OP); } if (sOpToString.length != _NUM_OP) { - throw new IllegalStateException("sOpStringLength " + sOpToString.length + throw new IllegalStateException("sOpToString length " + sOpToString.length + " should be " + _NUM_OP); } if (sOpNames.length != _NUM_OP) { - throw new IllegalStateException("sOpStringLength " + sOpNames.length + throw new IllegalStateException("sOpNames length " + sOpNames.length + " should be " + _NUM_OP); } if (sOpPerms.length != _NUM_OP) { - throw new IllegalStateException("sOpStringLength " + sOpPerms.length + throw new IllegalStateException("sOpPerms length " + sOpPerms.length + " should be " + _NUM_OP); } if (sOpDefaultMode.length != _NUM_OP) { - throw new IllegalStateException("sOpStringLength " + sOpDefaultMode.length + throw new IllegalStateException("sOpDefaultMode length " + sOpDefaultMode.length + + " should be " + _NUM_OP); + } + if (sOpDisableReset.length != _NUM_OP) { + throw new IllegalStateException("sOpDisableReset length " + sOpDisableReset.length + " should be " + _NUM_OP); } for (int i=0; i<_NUM_OP; i++) { @@ -517,6 +574,14 @@ public class AppOpsManager { } /** + * Retrieve whether the op allows itself to be reset. + * @hide + */ + public static boolean opAllowsReset(int op) { + return !sOpDisableReset[op]; + } + + /** * Class holding all of the operation information associated with an app. * @hide */ |