summaryrefslogtreecommitdiff
path: root/cmds/dpm/src
diff options
context:
space:
mode:
authorFyodor Kupolov <fkupolov@google.com>2015-12-04 10:58:37 -0800
committerFyodor Kupolov <fkupolov@google.com>2015-12-04 14:28:46 -0800
commit6bccb76a64ba74c2e0267db1d2ec14a4ffa96771 (patch)
tree1c28126277c16bc54fe02427771bb5e2302f4759 /cmds/dpm/src
parent95bdfae278d34123c76153d340bf5f413442d2a3 (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.java41
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 {