Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +22 −16 Original line number Diff line number Diff line Loading @@ -8533,27 +8533,33 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { mPackagesToRemove.add(packageUserPair); } final List<ComponentName> activeAdminsList = getActiveAdmins(userId); if (activeAdminsList == null || activeAdminsList.size() == 0) { startUninstallIntent(packageName, userId); return; } // All active admins on the user. final List<ComponentName> allActiveAdmins = getActiveAdmins(userId); for (ComponentName activeAdmin : activeAdminsList) { // Active admins in the target package. final List<ComponentName> packageActiveAdmins = new ArrayList<>(); if (allActiveAdmins != null) { for (ComponentName activeAdmin : allActiveAdmins) { if (packageName.equals(activeAdmin.getPackageName())) { packageActiveAdmins.add(activeAdmin); removeActiveAdmin(activeAdmin, userId); } } } if (packageActiveAdmins.size() == 0) { startUninstallIntent(packageName, userId); } else { mHandler.postDelayed(new Runnable() { @Override public void run() { for (ComponentName activeAdmin : activeAdminsList) { for (ComponentName activeAdmin : packageActiveAdmins) { removeAdminArtifacts(activeAdmin, userId); } startUninstallIntent(packageName, userId); } }, DEVICE_ADMIN_DEACTIVATE_TIMEOUT); // Start uninstall after timeout anyway. } } private void removePackageIfRequired(final String packageName, final int userId) { if (!packageHasActiveAdmins(packageName, userId)) { Loading Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +22 −16 Original line number Diff line number Diff line Loading @@ -8533,27 +8533,33 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { mPackagesToRemove.add(packageUserPair); } final List<ComponentName> activeAdminsList = getActiveAdmins(userId); if (activeAdminsList == null || activeAdminsList.size() == 0) { startUninstallIntent(packageName, userId); return; } // All active admins on the user. final List<ComponentName> allActiveAdmins = getActiveAdmins(userId); for (ComponentName activeAdmin : activeAdminsList) { // Active admins in the target package. final List<ComponentName> packageActiveAdmins = new ArrayList<>(); if (allActiveAdmins != null) { for (ComponentName activeAdmin : allActiveAdmins) { if (packageName.equals(activeAdmin.getPackageName())) { packageActiveAdmins.add(activeAdmin); removeActiveAdmin(activeAdmin, userId); } } } if (packageActiveAdmins.size() == 0) { startUninstallIntent(packageName, userId); } else { mHandler.postDelayed(new Runnable() { @Override public void run() { for (ComponentName activeAdmin : activeAdminsList) { for (ComponentName activeAdmin : packageActiveAdmins) { removeAdminArtifacts(activeAdmin, userId); } startUninstallIntent(packageName, userId); } }, DEVICE_ADMIN_DEACTIVATE_TIMEOUT); // Start uninstall after timeout anyway. } } private void removePackageIfRequired(final String packageName, final int userId) { if (!packageHasActiveAdmins(packageName, userId)) { Loading