summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2014-07-25 10:20:26 -0700
committerAdam Lesinski <adamlesinski@google.com>2014-07-31 19:12:09 +0000
commit366e7a20c4d716c3d260faef929f0e8d6be267fb (patch)
tree45af84d3a4efce099b7e6f8c20575a49b686e8d1
parent80e1f1bfdb814a08fb8b07b2e279285d495042e9 (diff)
downloadpackages_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.java15
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;
}