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
This commit is contained in:
@@ -148,6 +148,11 @@ public class UsageAccessSettings extends SettingsPreferenceFragment implements
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (packageOp.getUid() != pe.packageInfo.applicationInfo.uid) {
|
||||||
|
// This AppOp does not belong to this user.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (packageOp.getOps().size() < 1) {
|
if (packageOp.getOps().size() < 1) {
|
||||||
Log.w(TAG, "No AppOps permission exists for package "
|
Log.w(TAG, "No AppOps permission exists for package "
|
||||||
+ packageOp.getPackageName());
|
+ packageOp.getPackageName());
|
||||||
@@ -294,9 +299,13 @@ public class UsageAccessSettings extends SettingsPreferenceFragment implements
|
|||||||
|
|
||||||
final int newMode = (Boolean) newValue ?
|
final int newMode = (Boolean) newValue ?
|
||||||
AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED;
|
AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED;
|
||||||
mAppOpsManager.setMode(AppOpsManager.OP_GET_USAGE_STATS, pe.packageInfo.applicationInfo.uid,
|
|
||||||
packageName, 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;
|
pe.appOpMode = newMode;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user