Loading services/core/java/com/android/server/pm/PackageManagerService.java +20 −6 Original line number Diff line number Diff line Loading @@ -3229,17 +3229,31 @@ public class PackageManagerService implements PackageSender, TestUtilityService return true; } // Does it contain a device admin for any user? int[] users; int[] allUsers = mUserManager.getUserIds(); int[] targetUsers; if (userId == UserHandle.USER_ALL) { users = mUserManager.getUserIds(); targetUsers = allUsers; } else { users = new int[]{userId}; targetUsers = new int[]{userId}; } for (int i = 0; i < users.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, users[i])) { for (int i = 0; i < targetUsers.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, targetUsers[i])) { return true; } if (isDeviceManagementRoleHolder(packageName, users[i])) { } // If a package is DMRH on a managed user, it should also be treated as an admin on // that user. If that package is also a system package, it should also be protected // on other users otherwise "uninstall updates" on an unmanaged user may break // management on other users because apk version is shared between all users. var packageState = snapshotComputer().getPackageStateInternal(packageName); if (packageState == null) { return false; } for (int user : packageState.isSystem() ? allUsers : targetUsers) { if (mProtectedPackages.getDeviceOwnerOrProfileOwnerPackage(user) != null && isDeviceManagementRoleHolder(packageName, user)) { return true; } } Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +20 −6 Original line number Diff line number Diff line Loading @@ -3229,17 +3229,31 @@ public class PackageManagerService implements PackageSender, TestUtilityService return true; } // Does it contain a device admin for any user? int[] users; int[] allUsers = mUserManager.getUserIds(); int[] targetUsers; if (userId == UserHandle.USER_ALL) { users = mUserManager.getUserIds(); targetUsers = allUsers; } else { users = new int[]{userId}; targetUsers = new int[]{userId}; } for (int i = 0; i < users.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, users[i])) { for (int i = 0; i < targetUsers.length; ++i) { if (dpm.packageHasActiveAdmins(packageName, targetUsers[i])) { return true; } if (isDeviceManagementRoleHolder(packageName, users[i])) { } // If a package is DMRH on a managed user, it should also be treated as an admin on // that user. If that package is also a system package, it should also be protected // on other users otherwise "uninstall updates" on an unmanaged user may break // management on other users because apk version is shared between all users. var packageState = snapshotComputer().getPackageStateInternal(packageName); if (packageState == null) { return false; } for (int user : packageState.isSystem() ? allUsers : targetUsers) { if (mProtectedPackages.getDeviceOwnerOrProfileOwnerPackage(user) != null && isDeviceManagementRoleHolder(packageName, user)) { return true; } } Loading