diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index c2ac27a5b7378..e3c41f3aaf3b3 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -430,6 +430,9 @@ public class LauncherAppsService extends SystemService { if (!mVouchedSignaturesByUser.containsKey(user)) { initVouchedSignatures(user); } + if (isManagedProfileAdmin(user, appInfo.packageName)) { + return false; + } if (mVouchProviders.contains(appInfo.packageName)) { // If it's a vouching packages then we must show hidden app return true; @@ -453,6 +456,24 @@ public class LauncherAppsService extends SystemService { return true; } + private boolean isManagedProfileAdmin(UserHandle user, String packageName) { + final List userInfoList = mUm.getProfiles(user.getIdentifier()); + for (int i = 0; i < userInfoList.size(); i++) { + UserInfo userInfo = userInfoList.get(i); + if (!userInfo.isManagedProfile()) { + continue; + } + ComponentName componentName = mDpm.getProfileOwnerAsUser(userInfo.getUserHandle()); + if (componentName == null) { + continue; + } + if (componentName.getPackageName().equals(packageName)) { + return true; + } + } + return false; + } + @VisibleForTesting static String computePackageCertDigest(Signature signature) { MessageDigest messageDigest;