diff options
author | Adam Lesinski <adamlesinski@google.com> | 2014-07-25 10:20:26 -0700 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2014-07-31 19:12:09 +0000 |
commit | 366e7a20c4d716c3d260faef929f0e8d6be267fb (patch) | |
tree | 45af84d3a4efce099b7e6f8c20575a49b686e8d1 | |
parent | 80e1f1bfdb814a08fb8b07b2e279285d495042e9 (diff) | |
download | packages_apps_Settings-366e7a20c4d716c3d260faef929f0e8d6be267fb.zip packages_apps_Settings-366e7a20c4d716c3d260faef929f0e8d6be267fb.tar.gz packages_apps_Settings-366e7a20c4d716c3d260faef929f0e8d6be267fb.tar.bz2 |
Fix UsageStats permissions in Settings
AppOpsManager returns all permission for all users. We need
to check that the permission we're getting is actually for
our user.
Change-Id: I8287d2dc1959d4a22c19ebb2d24136324e04cd2b
-rw-r--r-- | src/com/android/settings/UsageAccessSettings.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/com/android/settings/UsageAccessSettings.java b/src/com/android/settings/UsageAccessSettings.java index 8e8e533..8ae277d 100644 --- a/src/com/android/settings/UsageAccessSettings.java +++ b/src/com/android/settings/UsageAccessSettings.java @@ -148,6 +148,11 @@ public class UsageAccessSettings extends SettingsPreferenceFragment implements continue; } + if (packageOp.getUid() != pe.packageInfo.applicationInfo.uid) { + // This AppOp does not belong to this user. + continue; + } + if (packageOp.getOps().size() < 1) { Log.w(TAG, "No AppOps permission exists for package " + packageOp.getPackageName()); @@ -294,9 +299,13 @@ public class UsageAccessSettings extends SettingsPreferenceFragment implements final int newMode = (Boolean) newValue ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED; - mAppOpsManager.setMode(AppOpsManager.OP_GET_USAGE_STATS, pe.packageInfo.applicationInfo.uid, - packageName, newMode); - pe.appOpMode = newMode; + + // Check if we need to do any work. + if (pe.appOpMode != newMode) { + mAppOpsManager.setMode(AppOpsManager.OP_GET_USAGE_STATS, + pe.packageInfo.applicationInfo.uid, packageName, newMode); + pe.appOpMode = newMode; + } return true; } |