Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28aac63a authored by Kenny Guy's avatar Kenny Guy Committed by Android Git Automerger
Browse files

am 5e04b52d: am e938f314: am c322e272: am 420050d8: am 25be3cd6: Merge...

am 5e04b52d: am e938f314: am c322e272: am 420050d8: am 25be3cd6: Merge "Uninstall for all users should check device admins." into lmp-dev

* commit '5e04b52d87dba1abfe1f274f0a32179490c2c813':
  Uninstall for all users should check device admins.
parents 7cf4a1e6 9281a439
Loading
Loading
Loading
Loading
+20 −7
Original line number Diff line number Diff line
@@ -10444,10 +10444,22 @@ public class PackageManagerService extends IPackageManager.Stub {
        IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface(
                ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
        try {
            if (dpm != null && (dpm.packageHasActiveAdmins(packageName, userId)
                    || dpm.isDeviceOwner(packageName))) {
            if (dpm != null) {
                if (dpm.isDeviceOwner(packageName)) {
                    return true;
                }
                int[] users;
                if (userId == UserHandle.USER_ALL) {
                    users = sUserManager.getUserIds();
                } else {
                    users = new int[]{userId};
                }
                for (int i = 0; i < users.length; ++i) {
                    if (dpm.packageHasActiveAdmins(packageName, users[i])) {
                        return true;
                    }
                }
            }
        } catch (RemoteException e) {
        }
        return false;
@@ -10471,7 +10483,10 @@ public class PackageManagerService extends IPackageManager.Stub {
        final PackageRemovedInfo info = new PackageRemovedInfo();
        final boolean res;
        if (isPackageDeviceAdmin(packageName, userId)) {
        final UserHandle removeForUser = (flags & PackageManager.DELETE_ALL_USERS) != 0
                ? UserHandle.ALL : new UserHandle(userId);
        if (isPackageDeviceAdmin(packageName, removeForUser.getIdentifier())) {
            Slog.w(TAG, "Not removing package " + packageName + ": has active device admin");
            return PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER;
        }
@@ -10494,9 +10509,7 @@ public class PackageManagerService extends IPackageManager.Stub {
        synchronized (mInstallLock) {
            if (DEBUG_REMOVE) Slog.d(TAG, "deletePackageX: pkg=" + packageName + " user=" + userId);
            res = deletePackageLI(packageName,
                    (flags & PackageManager.DELETE_ALL_USERS) != 0
                            ? UserHandle.ALL : new UserHandle(userId),
            res = deletePackageLI(packageName, removeForUser,
                    true, allUsers, perUserInstalled,
                    flags | REMOVE_CHATTY, info, true);
            systemUpdate = info.isRemovedPackageSystemUpdate;