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

Commit 215b0f66 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix the side effect of `adb shell dpm set-device-owner`" into main

parents 2d0cab30 1165c2d1
Loading
Loading
Loading
Loading
+12 −3
Original line number Original line Diff line number Diff line
@@ -251,7 +251,14 @@ final class DevicePolicyManagerServiceShellCommand extends ShellCommand {


    private int runSetDeviceOwner(PrintWriter pw) {
    private int runSetDeviceOwner(PrintWriter pw) {
        parseArgs();
        parseArgs();
        mService.setActiveAdmin(mComponent, /* refreshing= */ true, mUserId);
        boolean isAdminAdded = false;
        try {
            mService.setActiveAdmin(mComponent, /* refreshing= */ false, mUserId);
            isAdminAdded = true;
        } catch (IllegalArgumentException e) {
            pw.printf("%s was already an admin for user %d. No need to set it again.\n",
                    mComponent.flattenToShortString(), mUserId);
        }


        try {
        try {
            if (!mService.setDeviceOwner(mComponent, mUserId,
            if (!mService.setDeviceOwner(mComponent, mUserId,
@@ -260,8 +267,10 @@ final class DevicePolicyManagerServiceShellCommand extends ShellCommand {
                        "Can't set package " + mComponent + " as device owner.");
                        "Can't set package " + mComponent + " as device owner.");
            }
            }
        } catch (Exception e) {
        } catch (Exception e) {
            if (isAdminAdded) {
                // Need to remove the admin that we just added.
                // Need to remove the admin that we just added.
            mService.removeActiveAdmin(mComponent, UserHandle.USER_SYSTEM);
                mService.removeActiveAdmin(mComponent, mUserId);
            }
            throw e;
            throw e;
        }
        }