diff --git a/res/layout/crypt_keeper_password_entry.xml b/res/layout/crypt_keeper_password_entry.xml
index ecbfefd..6e99527 100644
--- a/res/layout/crypt_keeper_password_entry.xml
+++ b/res/layout/crypt_keeper_password_entry.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 **
-** Copyright 2011, The Android Open Source Project
+** Copyright 2014, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License")
 ** you may not use this file except in compliance with the License.
@@ -20,29 +20,36 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
->
+    android:orientation="vertical">
+
     <include layout="@layout/crypt_keeper_status" />
 
     <LinearLayout
-        android:layout_height="wrap_content"
+        android:layout_height="0dp"
         android:layout_width="match_parent"
-        android:layout_marginStart="8dip"
-        android:layout_marginEnd="8dip"
-        android:orientation="horizontal"
-    >
-        <include layout="@layout/crypt_keeper_password_field" />
+        android:layout_weight="1"
+        android:layout_marginStart="@dimen/crypt_keeper_edit_text_margin"
+        android:layout_marginEnd="@dimen/crypt_keeper_edit_text_margin"
+        android:orientation="vertical"
+        android:gravity="center_vertical">
+
+        <LinearLayout
+            android:background="@color/crypt_keeper_password_background"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+            <include layout="@layout/crypt_keeper_password_field" />
+        </LinearLayout>
+
     </LinearLayout>
+
     <!-- Emergency call button.
          Text is set by CryptKeeper.updateEmergencyCallButtonState() -->
     <Button android:id="@+id/emergencyCallButton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_marginTop="16dip"
-        style="?android:attr/borderlessButtonStyle"
-        android:textSize="14sp"
-        android:drawablePadding="6dip"
-        />
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="@dimen/crypt_keeper_emergency_call_space_above"
+        style="?android:attr/borderlessButtonStyle" />
 
 </LinearLayout>
diff --git a/res/layout/crypt_keeper_password_field.xml b/res/layout/crypt_keeper_password_field.xml
index 9a2a24d..2d98b25 100644
--- a/res/layout/crypt_keeper_password_field.xml
+++ b/res/layout/crypt_keeper_password_field.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 **
-** Copyright 2011, The Android Open Source Project
+** Copyright 2014, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License")
 ** you may not use this file except in compliance with the License.
@@ -20,16 +20,13 @@
 <!-- Contents of the password entry field for CryptKeeper. Comes with an IME
      switcher, if necessary. Assumed to be in a horizontal LinearLayout. -->
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
+
     <EditText android:id="@+id/passwordEntry"
         android:layout_height="wrap_content"
         android:layout_width="0dip"
         android:layout_weight="1"
-        android:singleLine="true"
         android:inputType="textPassword"
-        android:imeOptions="flagForceAscii|actionDone"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:gravity="center_horizontal"
-     />
+        style="@style/TextAppearance.CryptKeeper_PasswordEntry" />
 
    <ImageView android:id="@+id/switch_ime_button"
        android:layout_width="wrap_content"
@@ -37,9 +34,9 @@
        android:src="@drawable/ic_lockscreen_ime"
        android:clickable="true"
        android:contentDescription="@string/crypt_keeper_switch_input_method"
-       android:padding="8dip"
+       android:padding="@dimen/crypt_keeper_edit_text_ime_padding"
        android:layout_gravity="center"
        android:background="?android:attr/selectableItemBackground"
-       android:visibility="gone"
-   />
+       android:visibility="gone" />
+
 </merge>
diff --git a/res/layout/crypt_keeper_pattern_entry.xml b/res/layout/crypt_keeper_pattern_entry.xml
index 2538809..80e318f 100644
--- a/res/layout/crypt_keeper_pattern_entry.xml
+++ b/res/layout/crypt_keeper_pattern_entry.xml
@@ -20,18 +20,26 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
->
+    android:orientation="vertical">
+
     <include layout="@layout/crypt_keeper_status" />
 
     <LinearLayout
-        android:layout_height="wrap_content"
+        android:layout_height="0dp"
         android:layout_width="match_parent"
-        android:layout_marginStart="8dip"
-        android:layout_marginEnd="8dip"
-        android:orientation="horizontal"
-    >
-        <include layout="@layout/crypt_keeper_pattern_field" />
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:gravity="center_vertical">
+
+        <LinearLayout
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:layout_marginStart="@dimen/crypt_keeper_edit_text_margin"
+            android:layout_marginEnd="@dimen/crypt_keeper_edit_text_margin"
+            android:orientation="horizontal" >
+            <include layout="@layout/crypt_keeper_pattern_field" />
+        </LinearLayout>
+
     </LinearLayout>
 
     <!-- Emergency call button.
@@ -40,9 +48,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
-        android:layout_marginTop="16dip"
-        style="?android:attr/borderlessButtonStyle"
-        android:drawablePadding="6dip"
-    />
+        android:layout_marginTop="@dimen/crypt_keeper_emergency_call_space_above"
+        style="?android:attr/borderlessButtonStyle" />
 
 </LinearLayout>
diff --git a/res/layout/crypt_keeper_pattern_field.xml b/res/layout/crypt_keeper_pattern_field.xml
index a24d9aa..cf6a29f 100644
--- a/res/layout/crypt_keeper_pattern_field.xml
+++ b/res/layout/crypt_keeper_pattern_field.xml
@@ -20,11 +20,11 @@
 <!-- Contents of the password entry field for CryptKeeper. Comes with an IME
      switcher, if necessary. Assumed to be in a horizontal LinearLayout. -->
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
+
    <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
-       android:background="@color/lock_pattern_background"
-   />
+       android:background="@color/lock_pattern_background" />
 
    <ImageView android:id="@+id/switch_ime_button"
        android:layout_width="wrap_content"
@@ -32,9 +32,9 @@
        android:src="@drawable/ic_lockscreen_ime"
        android:clickable="true"
        android:contentDescription="@string/crypt_keeper_switch_input_method"
-       android:padding="8dip"
+       android:padding="@dimen/crypt_keeper_edit_text_ime_padding"
        android:layout_gravity="center"
        android:background="?android:attr/selectableItemBackground"
-       android:visibility="gone"
-   />
+       android:visibility="gone" />
+
 </merge>
diff --git a/res/layout/crypt_keeper_pin_entry.xml b/res/layout/crypt_keeper_pin_entry.xml
index 0f1f1e7..0bcbec5 100644
--- a/res/layout/crypt_keeper_pin_entry.xml
+++ b/res/layout/crypt_keeper_pin_entry.xml
@@ -20,29 +20,36 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
->
+    android:orientation="vertical">
+
     <include layout="@layout/crypt_keeper_status" />
 
     <LinearLayout
-        android:layout_height="wrap_content"
+        android:layout_height="0dp"
         android:layout_width="match_parent"
-        android:layout_marginStart="8dip"
-        android:layout_marginEnd="8dip"
-        android:orientation="horizontal"
-    >
-        <include layout="@layout/crypt_keeper_pin_field" />
+        android:layout_weight="1"
+        android:layout_marginStart="@dimen/crypt_keeper_edit_text_margin"
+        android:layout_marginEnd="@dimen/crypt_keeper_edit_text_margin"
+        android:orientation="vertical"
+        android:gravity="center_vertical">
+
+        <LinearLayout
+            android:background="@color/crypt_keeper_password_background"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+            <include layout="@layout/crypt_keeper_pin_field" />
+        </LinearLayout>
+
     </LinearLayout>
 
     <!-- Emergency call button.
-         Text and icon are set by CryptKeeper.updateEmergencyCallButtonState() -->
+         Text is set by CryptKeeper.updateEmergencyCallButtonState() -->
     <Button android:id="@+id/emergencyCallButton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_marginTop="16dip"
-        style="?android:attr/borderlessButtonStyle"
-        android:drawablePadding="6dip"
-    />
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="@dimen/crypt_keeper_emergency_call_space_above"
+        style="?android:attr/borderlessButtonStyle" />
 
 </LinearLayout>
diff --git a/res/layout/crypt_keeper_pin_field.xml b/res/layout/crypt_keeper_pin_field.xml
index dd9d233..2fc1e81 100644
--- a/res/layout/crypt_keeper_pin_field.xml
+++ b/res/layout/crypt_keeper_pin_field.xml
@@ -20,16 +20,13 @@
 <!-- Contents of the password entry field for CryptKeeper. Comes with an IME
      switcher, if necessary. Assumed to be in a horizontal LinearLayout. -->
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
+
     <EditText android:id="@+id/passwordEntry"
         android:layout_height="wrap_content"
         android:layout_width="0dip"
         android:layout_weight="1"
-        android:singleLine="true"
         android:inputType="numberPassword"
-        android:imeOptions="flagForceAscii|actionDone"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:gravity="center_horizontal"
-     />
+        style="@style/TextAppearance.CryptKeeper_PasswordEntry" />
 
    <ImageView android:id="@+id/switch_ime_button"
        android:layout_width="wrap_content"
@@ -37,9 +34,9 @@
        android:src="@drawable/ic_lockscreen_ime"
        android:clickable="true"
        android:contentDescription="@string/crypt_keeper_switch_input_method"
-       android:padding="8dip"
+       android:padding="@dimen/crypt_keeper_edit_text_ime_padding"
        android:layout_gravity="center"
        android:background="?android:attr/selectableItemBackground"
-       android:visibility="gone"
-   />
+       android:visibility="gone" />
+
 </merge>
diff --git a/res/layout/crypt_keeper_status.xml b/res/layout/crypt_keeper_status.xml
index 9015613..72f7aec 100644
--- a/res/layout/crypt_keeper_status.xml
+++ b/res/layout/crypt_keeper_status.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 **
-** Copyright 2011, The Android Open Source Project
+** Copyright 2014, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License")
 ** you may not use this file except in compliance with the License.
@@ -23,8 +23,8 @@
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_gravity="center_horizontal"
->
+    android:layout_gravity="center_horizontal">
+
     <TextView
         android:id="@+id/status"
         android:layout_width="wrap_content"
@@ -33,11 +33,10 @@
         android:layout_marginStart="8dip"
         android:layout_marginEnd="8dip"
         android:textSize="18sp"
-        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textAppearance="?android:attr/textAppearanceLarge"
         android:text="@string/enter_password"
-        android:drawableLeft="@*android:drawable/ic_lock_idle_lock"
-        android:layout_gravity="center_horizontal"
-        />
+        android:layout_gravity="center_horizontal" />
+
     <TextView
         android:id="@+id/owner_info"
         android:layout_width="match_parent"
@@ -49,6 +48,6 @@
         android:ellipsize="marquee"
         android:marqueeRepeatLimit ="marquee_forever"
         android:textSize="16sp"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        />
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
 </LinearLayout>
diff --git a/res/layout/preference_list_fragment.xml b/res/layout/preference_list_fragment.xml
index 297e33b..a97415e 100644
--- a/res/layout/preference_list_fragment.xml
+++ b/res/layout/preference_list_fragment.xml
@@ -29,8 +29,8 @@
               android:layout_width="match_parent"
               android:layout_height="0px"
               android:layout_weight="1"
-              android:paddingStart="@dimen/dashboard_padding_start"
-              android:paddingEnd="@dimen/dashboard_padding_end"
+              android:paddingStart="@dimen/settings_side_margin"
+              android:paddingEnd="@dimen/settings_side_margin"
               android:paddingTop="@dimen/dashboard_padding_top"
               android:paddingBottom="@dimen/dashboard_padding_bottom"
               android:scrollbarStyle="@*android:integer/preference_fragment_scrollbarStyle"
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index a00fbb4..3911378 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -641,10 +641,12 @@
         <item>alarm volume</item>
         <item>notification volume</item>
         <item>bluetooth volume</item>
-        <item>mute/unmute microphone</item>
         <item>keep awake</item>
         <item>monitor location</item>
         <item>monitor high power location</item>
+        <item>get usage stats</item>
+        <item>mute/unmute microphone</item>
+        <item>project media</item>
     </string-array>
 
     <!-- User display names for app ops codes -->
@@ -689,10 +691,12 @@
         <item>Alarm volume</item>
         <item>Notification volume</item>
         <item>Bluetooth volume</item>
-        <item>Mute/unmute microphone</item>
         <item>Keep awake</item>
         <item>Location</item>
         <item>Location</item>
+        <item>Get usage stats</item>
+        <item>Mute/unmute microphone</item>
+        <item>Project media</item>
     </string-array>
 
     <!-- Titles for the list of long press timeout options. -->
diff --git a/res/values/colors.xml b/res/values/colors.xml
index b523801..b2a6bb9 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -34,6 +34,7 @@
     <color name="crypt_keeper_clock_background">#ff9a9a9a</color>
     <color name="crypt_keeper_clock_foreground">#ff666666</color>
     <color name="crypt_keeper_clock_am_pm">#ff9a9a9a</color>
+    <color name="crypt_keeper_password_background">#70606060</color>
 
     <color name="divider_color">#20ffffff</color>
     <color name="title_color">@android:color/holo_blue_light</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ae654e4..29d311f 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -171,4 +171,13 @@
     <dimen name="wifi_assistant_padding">25dp</dimen>
     <dimen name="wifi_assistant_text_padding">16dp</dimen>
 
+    <!-- CryptKeeper edit text margin -->
+    <dimen name="crypt_keeper_edit_text_margin">16dip</dimen>
+
+    <!-- CryptKeeper emergency call button dimensions -->
+    <dimen name="crypt_keeper_emergency_call_space_above">16dip</dimen>
+
+    <!-- CryptKeeper edit text ime icon padding -->
+    <dimen name="crypt_keeper_edit_text_ime_padding">8dip</dimen>
+
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ec4e13c..aef4864 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1296,8 +1296,6 @@
 
     <!-- Wifi Assistant title string.  [CHAR LIMIT=20] -->
     <string name="wifi_assistant_intro_setup">Introducing\nWi\u2011Fi Assistant</string>
-    <!-- Wifi Assistant title string.  [CHAR LIMIT=40] -->
-    <string name="wifi_assistant_title">Wi\u2011Fi Assistant</string>
     <!-- Wifi Assistant No, thanks string.  Text to say no to wifi assistant. [CHAR LIMIT=20] -->
     <string name="wifi_assistant_no_thanks">NO, THANKS</string>
     <!-- Wifi Assistant setup string.  Text to say yes to wifi assistant and begin setup. [CHAR LIMIT=20] -->
@@ -4848,7 +4846,7 @@
     <!-- Data Usage Foreground label.  [CHAR LIMIT=40] -->
     <string name="data_usage_forground_label">Foreground:</string>
     <!-- Data Usage Background label.  [CHAR LIMIT=40] -->
-    <string name="data_usage_forground_label">Background:</string>
+    <string name="data_usage_background_label">Background:</string>
     <!-- Button title for launching application-specific data usage settings. [CHAR LIMIT=32] -->
     <string name="data_usage_app_settings">View app settings</string>
     <!-- Checkbox label that restricts background data usage of a specific application. [CHAR LIMIT=32] -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 32a205d..1923ce6 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -82,6 +82,15 @@
         <item name="android:textColor">?android:attr/textColorPrimary</item>
     </style>
 
+    <style name="TextAppearance.CryptKeeper_PasswordEntry" parent="android:TextAppearance.Material">
+        <item name="android:textSize">36sp</item>
+        <item name="android:gravity">center_horizontal</item>
+        <item name="android:background">@null</item>
+        <item name="android:textCursorDrawable">@null</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:imeOptions">flagForceAscii|actionDone</item>
+    </style>
+
     <style name="TallTitleBarTheme" parent="android:Theme.NoTitleBar">
         <item name="android:windowContentOverlay">@null</item>
     </style>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 44b83b1..54b5d41 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -150,6 +150,10 @@
     </style>
 
     <style name="Theme.CryptKeeper" parent="@android:style/Theme.Material.NoActionBar">
+        <item name="android:windowTranslucentStatus">false</item>
+        <item name="android:windowTranslucentNavigation">false</item>
+        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
+
         <!-- LockPatternView colors -->
         <item name="@*android:regularColor">@color/unlock_pattern_view_regular_color</item>
         <item name="@*android:successColor">@color/unlock_pattern_view_success_color</item>
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index f035d7b..d3f0466 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -510,7 +510,8 @@
         mToggleLargeTextPreference.setChecked(mCurConfig.fontScale == LARGE_FONT_SCALE);
 
         mToggleHighTextContrastPreference.setChecked(
-                AccessibilityManager.getInstance(getActivity()).isHighTextContrastEnabled());
+                Settings.Secure.getInt(getContentResolver(),
+                        Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, 0) == 1);
 
         // Power button ends calls.
         if (KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
diff --git a/src/com/android/settings/applications/AppOpsState.java b/src/com/android/settings/applications/AppOpsState.java
index 4ef5ef2..75a8372 100644
--- a/src/com/android/settings/applications/AppOpsState.java
+++ b/src/com/android/settings/applications/AppOpsState.java
@@ -103,14 +103,14 @@
                     AppOpsManager.OP_WIFI_SCAN,
                     AppOpsManager.OP_NEIGHBORING_CELLS,
                     AppOpsManager.OP_MONITOR_LOCATION,
-                    AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION},
+                    AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION },
             new boolean[] { true,
                     true,
                     false,
                     false,
                     false,
                     false,
-                    false}
+                    false }
             );
 
     public static final OpsTemplate PERSONAL_TEMPLATE = new OpsTemplate(
@@ -189,13 +189,15 @@
                     AppOpsManager.OP_CALL_PHONE,
                     AppOpsManager.OP_WRITE_SETTINGS,
                     AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
-                    AppOpsManager.OP_WAKE_LOCK },
+                    AppOpsManager.OP_WAKE_LOCK,
+                    AppOpsManager.OP_PROJECT_MEDIA },
             new boolean[] { false,
                     true,
                     true,
                     true,
                     true,
-                    true,  }
+                    true,
+                    false, }
             );
 
     public static final OpsTemplate[] ALL_TEMPLATES = new OpsTemplate[] {
diff --git a/src/com/android/settings/location/RecentLocationApps.java b/src/com/android/settings/location/RecentLocationApps.java
index 164f4e7..8e1ec05 100644
--- a/src/com/android/settings/location/RecentLocationApps.java
+++ b/src/com/android/settings/location/RecentLocationApps.java
@@ -16,15 +16,18 @@
 
 package com.android.settings.location;
 
-import android.app.ActivityManager;
+import android.app.AppGlobals;
 import android.app.AppOpsManager;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.IPackageManager;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Process;
+import android.os.RemoteException;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.preference.Preference;
 import android.util.Log;
 
@@ -89,33 +92,37 @@
     }
 
     /**
-     * Fills a list of applications which queried location recently within
-     * specified time.
+     * Fills a list of applications which queried location recently within specified time.
      */
     public List<Preference> getAppList() {
         // Retrieve a location usage list from AppOps
         AppOpsManager aoManager =
                 (AppOpsManager) mActivity.getSystemService(Context.APP_OPS_SERVICE);
-        List<AppOpsManager.PackageOps> appOps = aoManager.getPackagesForOps(
-                new int[] {
-                    AppOpsManager.OP_MONITOR_LOCATION,
-                    AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION,
-                });
+        List<AppOpsManager.PackageOps> appOps = aoManager.getPackagesForOps(new int[] {
+                AppOpsManager.OP_MONITOR_LOCATION, AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION, });
 
         // Process the AppOps list and generate a preference list.
         ArrayList<Preference> prefs = new ArrayList<Preference>();
-        long now = System.currentTimeMillis();
-        for (AppOpsManager.PackageOps ops : appOps) {
+        final long now = System.currentTimeMillis();
+        final UserManager um = (UserManager) mActivity.getSystemService(Context.USER_SERVICE);
+        final List<UserHandle> profiles = um.getUserProfiles();
+
+        final int appOpsN = appOps.size();
+        for (int i = 0; i < appOpsN; ++i) {
+            AppOpsManager.PackageOps ops = appOps.get(i);
             // Don't show the Android System in the list - it's not actionable for the user.
-            // Also don't show apps belonging to background users.
+            // Also don't show apps belonging to background users except managed users.
+            String packageName = ops.getPackageName();
             int uid = ops.getUid();
-            boolean isAndroidOs = (uid == Process.SYSTEM_UID)
-                    && ANDROID_SYSTEM_PACKAGE_NAME.equals(ops.getPackageName());
-            if (!isAndroidOs && ActivityManager.getCurrentUser() == UserHandle.getUserId(uid)) {
-                Preference pref = getPreferenceFromOps(now, ops);
-                if (pref != null) {
-                    prefs.add(pref);
-                }
+            int userId = UserHandle.getUserId(uid);
+            boolean isAndroidOs =
+                    (uid == Process.SYSTEM_UID) && ANDROID_SYSTEM_PACKAGE_NAME.equals(packageName);
+            if (isAndroidOs || !profiles.contains(new UserHandle(userId))) {
+                continue;
+            }
+            Preference preference = getPreferenceFromOps(um, now, ops);
+            if (preference != null) {
+                prefs.add(preference);
             }
         }
 
@@ -130,7 +137,8 @@
      * When the PackageOps is fresh enough, this method returns a Preference pointing to the App
      * Info page for that package.
      */
-    private Preference getPreferenceFromOps(long now, AppOpsManager.PackageOps ops) {
+    private Preference getPreferenceFromOps(final UserManager um, long now,
+            AppOpsManager.PackageOps ops) {
         String packageName = ops.getPackageName();
         List<AppOpsManager.OpEntry> entries = ops.getOps();
         boolean highBattery = false;
@@ -161,30 +169,24 @@
 
         // The package is fresh enough, continue.
 
-        Preference pref = null;
+        int uid = ops.getUid();
+        int userId = UserHandle.getUserId(uid);
+
+        Preference preference = null;
         try {
-          ApplicationInfo appInfo = mPackageManager.getApplicationInfo(
-              packageName, PackageManager.GET_META_DATA);
-          // Multiple users can install the same package. Each user gets a different Uid for
-          // the same package.
-          //
-          // Here we retrieve the Uid with package name, that will be the Uid for that package
-          // associated with the current active user. If the Uid differs from the Uid in ops,
-          // that means this entry belongs to another inactive user and we should ignore that.
-          if (appInfo.uid == ops.getUid()) {
-            pref = createRecentLocationEntry(
-                mPackageManager.getApplicationIcon(appInfo),
-                mPackageManager.getApplicationLabel(appInfo),
-                highBattery,
-                new PackageEntryClickedListener(packageName));
-          } else if (Log.isLoggable(TAG, Log.VERBOSE)) {
-            Log.v(TAG, "package " + packageName + " with Uid " + ops.getUid() +
-                " belongs to another inactive account, ignored.");
-          }
-        } catch (PackageManager.NameNotFoundException e) {
-          Log.wtf(TAG, "Package not found: " + packageName, e);
+            IPackageManager ipm = AppGlobals.getPackageManager();
+            ApplicationInfo appInfo =
+                    ipm.getApplicationInfo(packageName, PackageManager.GET_META_DATA, userId);
+
+            Drawable icon = um.getBadgedDrawableForUser(
+                    mPackageManager.getApplicationIcon(appInfo), new UserHandle(userId));
+            preference = createRecentLocationEntry(icon,
+                    mPackageManager.getApplicationLabel(appInfo), highBattery,
+                    new PackageEntryClickedListener(packageName));
+        } catch (RemoteException e) {
+            Log.w(TAG, "Error while retrieving application info", e);
         }
 
-        return pref;
+        return preference;
     }
 }
