diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java index 1aca69adc98..daa38422956 100644 --- a/src/com/android/settings/applications/ApplicationsState.java +++ b/src/com/android/settings/applications/ApplicationsState.java @@ -327,6 +327,7 @@ public class ApplicationsState { final PackageManager mPm; final IPackageManager mIpm; final UserManager mUm; + final int mOwnerRetrieveFlags; final int mRetrieveFlags; PackageIntentReceiver mPackageIntentReceiver; @@ -531,14 +532,11 @@ public class ApplicationsState { mBackgroundHandler = new BackgroundHandler(mThread.getLooper()); // Only the owner can see all apps. - if (UserHandle.myUserId() == 0) { - mRetrieveFlags = PackageManager.GET_UNINSTALLED_PACKAGES | - PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS; - } else { - mRetrieveFlags = PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS; - } + mOwnerRetrieveFlags = PackageManager.GET_UNINSTALLED_PACKAGES | + PackageManager.GET_DISABLED_COMPONENTS | + PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS; + mRetrieveFlags = PackageManager.GET_DISABLED_COMPONENTS | + PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS; /** * This is a trick to prevent the foreground thread from being delayed. @@ -742,7 +740,9 @@ public class ApplicationsState { for (UserHandle user : mUm.getUserProfiles()) { try { ParceledListSlice list = - mIpm.getInstalledApplications(mRetrieveFlags, user.getIdentifier()); + mIpm.getInstalledApplications( + user.isOwner() ? mOwnerRetrieveFlags : mRetrieveFlags, + user.getIdentifier()); mApplications.addAll(list.getList()); } catch (RemoteException e) { } @@ -817,7 +817,8 @@ public class ApplicationsState { if (entry == null) { for (int i=0; i