From 6bccb76a64ba74c2e0267db1d2ec14a4ffa96771 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Fri, 4 Dec 2015 10:58:37 -0800 Subject: Allow --user current in dpm command dpm command now accepts current user as an argument. Bug: 25974105 Change-Id: I5335a2fc2159f9574e319697dcf5e0485233d8f2 --- cmds/dpm/src/com/android/commands/dpm/Dpm.java | 41 ++++++++++++++++++-------- 1 file changed, 29 insertions(+), 12 deletions(-) (limited to 'cmds') diff --git a/cmds/dpm/src/com/android/commands/dpm/Dpm.java b/cmds/dpm/src/com/android/commands/dpm/Dpm.java index ea530094e691..6dc3cd1d48e0 100644 --- a/cmds/dpm/src/com/android/commands/dpm/Dpm.java +++ b/cmds/dpm/src/com/android/commands/dpm/Dpm.java @@ -16,6 +16,8 @@ package com.android.commands.dpm; +import android.app.ActivityManagerNative; +import android.app.IActivityManager; import android.app.admin.IDevicePolicyManager; import android.content.ComponentName; import android.content.Context; @@ -51,19 +53,21 @@ public final class Dpm extends BaseCommand { public void onShowUsage(PrintStream out) { out.println( "usage: dpm [subcommand] [options]\n" + - "usage: dpm set-active-admin [ --user ] \n" + + "usage: dpm set-active-admin [ --user | current ] \n" + // STOPSHIP Finalize it - "usage: dpm set-device-owner [ --user *EXPERIMENTAL* ] [ --name ] \n" + - "usage: dpm set-profile-owner [ --user ] [ --name ] \n" + + "usage: dpm set-device-owner [ --user | current *EXPERIMENTAL* ] " + + "[ --name ] \n" + + "usage: dpm set-profile-owner [ --user | current ] [ --name ] " + + "\n" + "\n" + "dpm set-active-admin: Sets the given component as active admin" + " for an existing user.\n" + "\n" + - "dpm set-device-owner: Sets the given component as active admin, and its\n" + - " package as device owner.\n" + + "dpm set-device-owner: Sets the given component as active admin, and its" + + " package as device owner.\n" + "\n" + "dpm set-profile-owner: Sets the given component as active admin and profile" + - " owner for an existing user.\n"); + " owner for an existing user.\n"); } @Override @@ -91,11 +95,24 @@ public final class Dpm extends BaseCommand { } } - private void parseArgs(boolean canHaveUser, boolean canHaveName) { + private void parseArgs(boolean canHaveName) { String opt; while ((opt = nextOption()) != null) { - if (canHaveUser && "--user".equals(opt)) { - mUserId = parseInt(nextArgRequired()); + if ("--user".equals(opt)) { + String arg = nextArgRequired(); + if ("current".equals(arg) || "cur".equals(arg)) { + mUserId = UserHandle.USER_CURRENT; + } else { + mUserId = parseInt(arg); + } + if (mUserId == UserHandle.USER_CURRENT) { + IActivityManager activityManager = ActivityManagerNative.getDefault(); + try { + mUserId = activityManager.getCurrentUser().id; + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); + } + } } else if (canHaveName && "--name".equals(opt)) { mName = nextArgRequired(); } else { @@ -106,14 +123,14 @@ public final class Dpm extends BaseCommand { } private void runSetActiveAdmin() throws RemoteException { - parseArgs(/*canHaveUser=*/ true, /*canHaveName=*/ false); + parseArgs(/*canHaveName=*/ false); mDevicePolicyManager.setActiveAdmin(mComponent, true /*refreshing*/, mUserId); System.out.println("Success: Active admin set to component " + mComponent.toShortString()); } private void runSetDeviceOwner() throws RemoteException { - parseArgs(/*canHaveUser=*/ true, /*canHaveName=*/ true); + parseArgs(/*canHaveName=*/ true); mDevicePolicyManager.setActiveAdmin(mComponent, true /*refreshing*/, mUserId); try { @@ -131,7 +148,7 @@ public final class Dpm extends BaseCommand { } private void runSetProfileOwner() throws RemoteException { - parseArgs(/*canHaveUser=*/ true, /*canHaveName=*/ true); + parseArgs(/*canHaveName=*/ true); mDevicePolicyManager.setActiveAdmin(mComponent, true /*refreshing*/, mUserId); try { -- cgit v1.2.3-59-g8ed1b