summaryrefslogtreecommitdiff
path: root/cmds/dpm
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/dpm')
-rw-r--r--cmds/dpm/src/com/android/commands/dpm/Dpm.java37
1 files changed, 21 insertions, 16 deletions
diff --git a/cmds/dpm/src/com/android/commands/dpm/Dpm.java b/cmds/dpm/src/com/android/commands/dpm/Dpm.java
index 214dc5d35a24..ea530094e691 100644
--- a/cmds/dpm/src/com/android/commands/dpm/Dpm.java
+++ b/cmds/dpm/src/com/android/commands/dpm/Dpm.java
@@ -44,6 +44,7 @@ public final class Dpm extends BaseCommand {
private IDevicePolicyManager mDevicePolicyManager;
private int mUserId = UserHandle.USER_SYSTEM;
+ private String mName = "";
private ComponentName mComponent = null;
@Override
@@ -52,8 +53,8 @@ public final class Dpm extends BaseCommand {
"usage: dpm [subcommand] [options]\n" +
"usage: dpm set-active-admin [ --user <USER_ID> ] <COMPONENT>\n" +
// STOPSHIP Finalize it
- "usage: dpm set-device-owner [ --user <USER_ID> *EXPERIMENTAL* ] <COMPONENT>\n" +
- "usage: dpm set-profile-owner [ --user <USER_ID> ] <COMPONENT>\n" +
+ "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" +
"\n" +
"dpm set-active-admin: Sets the given component as active admin" +
" for an existing user.\n" +
@@ -90,47 +91,51 @@ public final class Dpm extends BaseCommand {
}
}
- private void parseArgs(boolean canHaveUser) {
- String nextArg = nextArgRequired();
- if (canHaveUser && "--user".equals(nextArg)) {
- mUserId = parseInt(nextArgRequired());
- nextArg = nextArgRequired();
+ private void parseArgs(boolean canHaveUser, boolean canHaveName) {
+ String opt;
+ while ((opt = nextOption()) != null) {
+ if (canHaveUser && "--user".equals(opt)) {
+ mUserId = parseInt(nextArgRequired());
+ } else if (canHaveName && "--name".equals(opt)) {
+ mName = nextArgRequired();
+ } else {
+ throw new IllegalArgumentException("Unknown option: " + opt);
+ }
}
- mComponent = parseComponentName(nextArg);
+ mComponent = parseComponentName(nextArgRequired());
}
private void runSetActiveAdmin() throws RemoteException {
- parseArgs(true);
+ parseArgs(/*canHaveUser=*/ true, /*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(true);
+ parseArgs(/*canHaveUser=*/ true, /*canHaveName=*/ true);
mDevicePolicyManager.setActiveAdmin(mComponent, true /*refreshing*/, mUserId);
- String packageName = mComponent.getPackageName();
try {
- if (!mDevicePolicyManager.setDeviceOwner(packageName, null /*ownerName*/, mUserId)) {
+ if (!mDevicePolicyManager.setDeviceOwner(mComponent, mName, mUserId)) {
throw new RuntimeException(
- "Can't set package " + packageName + " as device owner.");
+ "Can't set package " + mComponent + " as device owner.");
}
} catch (Exception e) {
// Need to remove the admin that we just added.
mDevicePolicyManager.removeActiveAdmin(mComponent, UserHandle.USER_SYSTEM);
throw e;
}
- System.out.println("Success: Device owner set to package " + packageName);
+ System.out.println("Success: Device owner set to package " + mComponent);
System.out.println("Active admin set to component " + mComponent.toShortString());
}
private void runSetProfileOwner() throws RemoteException {
- parseArgs(true);
+ parseArgs(/*canHaveUser=*/ true, /*canHaveName=*/ true);
mDevicePolicyManager.setActiveAdmin(mComponent, true /*refreshing*/, mUserId);
try {
- if (!mDevicePolicyManager.setProfileOwner(mComponent, "" /*ownerName*/, mUserId)) {
+ if (!mDevicePolicyManager.setProfileOwner(mComponent, mName, mUserId)) {
throw new RuntimeException("Can't set component " + mComponent.toShortString() +
" as profile owner for user " + mUserId);
}