diff options
author | Fyodor Kupolov <fkupolov@google.com> | 2015-12-04 10:58:37 -0800 |
---|---|---|
committer | Fyodor Kupolov <fkupolov@google.com> | 2015-12-04 14:28:46 -0800 |
commit | 6bccb76a64ba74c2e0267db1d2ec14a4ffa96771 (patch) | |
tree | 1c28126277c16bc54fe02427771bb5e2302f4759 /cmds/dpm/src | |
parent | 95bdfae278d34123c76153d340bf5f413442d2a3 (diff) |
Allow --user current in dpm command
dpm command now accepts current user as an argument.
Bug: 25974105
Change-Id: I5335a2fc2159f9574e319697dcf5e0485233d8f2
Diffstat (limited to 'cmds/dpm/src')
-rw-r--r-- | cmds/dpm/src/com/android/commands/dpm/Dpm.java | 41 |
1 files changed, 29 insertions, 12 deletions
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 <USER_ID> ] <COMPONENT>\n" + + "usage: dpm set-active-admin [ --user <USER_ID> | current ] <COMPONENT>\n" + // STOPSHIP Finalize it - "usage: dpm set-device-owner [ --user <USER_ID> *EXPERIMENTAL* ] [ --name <NAME> ] <COMPONENT>\n" + - "usage: dpm set-profile-owner [ --user <USER_ID> ] [ --name <NAME> ] <COMPONENT>\n" + + "usage: dpm set-device-owner [ --user <USER_ID> | current *EXPERIMENTAL* ] " + + "[ --name <NAME> ] <COMPONENT>\n" + + "usage: dpm set-profile-owner [ --user <USER_ID> | current ] [ --name <NAME> ] " + + "<COMPONENT>\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 { |