summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fyodor Kupolov <fkupolov@google.com> 2015-12-07 18:38:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2015-12-07 18:38:04 +0000
commita9d492d7ff28535b4e44da43aed850a4d306cbcd (patch)
tree3672c8d45f1cb210a3c7375ef4f4cbc8f7879ce6
parent21d4b20f23c7fc7d88671375aea3c63d62780a10 (diff)
parent6bccb76a64ba74c2e0267db1d2ec14a4ffa96771 (diff)
Merge "Allow --user current in dpm command"
-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 {