From 875772787332614f97966b89ab2b63ed57e865e2 Mon Sep 17 00:00:00 2001 From: Ricky Wai Date: Thu, 24 Jan 2019 19:18:25 +0000 Subject: [PATCH] Allow work profile DPC app to hide itself in primary profile Test: Able to boot, TestDPC in PO is not showing in launcher Bug: 120537579 Change-Id: I47eca87d6bc4512d375f960f776dde2cb4b4cc77 --- .../server/pm/LauncherAppsService.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index d0ef4f1523d41..ac7fa2a786ffe 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;