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
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 @@
                     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 @@
 
         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;
     }