Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a92e1216 authored by phweiss's avatar phweiss
Browse files

Make API createAndManageUser public

Remove @hide, and add parameter for specifying profile owner. The PO
has to live in the same package as the device owner.

Bug: 25288732
Bug: 25860170
Change-Id: I40e8984a71ee9d1ff74e57d4e79e298deef9bc35
parent ab83fd57
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5790,6 +5790,7 @@ package android.app.admin {
    method public void clearPackagePersistentPreferredActivities(android.content.ComponentName, java.lang.String);
    method public void clearUserRestriction(android.content.ComponentName, java.lang.String);
    method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle);
    method public android.os.UserHandle createAndManageUser(android.content.ComponentName, java.lang.String, android.content.ComponentName, android.os.PersistableBundle, int);
    method public deprecated android.os.UserHandle createUser(android.content.ComponentName, java.lang.String);
    method public void enableSystemApp(android.content.ComponentName, java.lang.String);
    method public int enableSystemApp(android.content.ComponentName, android.content.Intent);
@@ -5982,6 +5983,7 @@ package android.app.admin {
    field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
    field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
    field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
    field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
    field public static final int WIPE_EXTERNAL_STORAGE = 1; // 0x1
    field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
  }
+2 −0
Original line number Diff line number Diff line
@@ -5926,6 +5926,7 @@ package android.app.admin {
    method public void clearProfileOwner(android.content.ComponentName);
    method public void clearUserRestriction(android.content.ComponentName, java.lang.String);
    method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle);
    method public android.os.UserHandle createAndManageUser(android.content.ComponentName, java.lang.String, android.content.ComponentName, android.os.PersistableBundle, int);
    method public deprecated android.os.UserHandle createUser(android.content.ComponentName, java.lang.String);
    method public void enableSystemApp(android.content.ComponentName, java.lang.String);
    method public int enableSystemApp(android.content.ComponentName, android.content.Intent);
@@ -6130,6 +6131,7 @@ package android.app.admin {
    field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
    field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
    field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
    field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
    field public static final int WIPE_EXTERNAL_STORAGE = 1; // 0x1
    field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
  }
+2 −0
Original line number Diff line number Diff line
@@ -5792,6 +5792,7 @@ package android.app.admin {
    method public void clearPackagePersistentPreferredActivities(android.content.ComponentName, java.lang.String);
    method public void clearUserRestriction(android.content.ComponentName, java.lang.String);
    method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle);
    method public android.os.UserHandle createAndManageUser(android.content.ComponentName, java.lang.String, android.content.ComponentName, android.os.PersistableBundle, int);
    method public deprecated android.os.UserHandle createUser(android.content.ComponentName, java.lang.String);
    method public void enableSystemApp(android.content.ComponentName, java.lang.String);
    method public int enableSystemApp(android.content.ComponentName, android.content.Intent);
@@ -5984,6 +5985,7 @@ package android.app.admin {
    field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
    field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
    field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
    field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
    field public static final int WIPE_EXTERNAL_STORAGE = 1; // 0x1
    field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
  }
+17 −14
Original line number Diff line number Diff line
@@ -4125,21 +4125,21 @@ public class DevicePolicyManager {
    }

    /**
      * Flag used by {@link createAndManageUser} to skip setup wizard after creating a new user.
      * @hide
      * Flag used by {@link #createAndManageUser} to skip setup wizard after creating a new user.
      */
    public static final int SKIP_SETUP_WIZARD = 0x0001;

    /**
     * Called by a device owner to create a user with the specified name and the caller as profile
     * owner. The UserHandle returned by this method should not be persisted as user handles are
     * recycled as users are removed and created. If you need to persist an identifier for this
     * user, use {@link UserManager#getSerialNumberForUser}. The new user will not be started in the
     * background.
     * Called by a device owner to create a user with the specified name and a given component of
     * the calling package as profile owner. The UserHandle returned by this method should not be
     * persisted as user handles are recycled as users are removed and created. If you need to
     * persist an identifier for this user, use {@link UserManager#getSerialNumberForUser}. The new
     * user will not be started in the background.
     *
     * <p> admin is the {@link DeviceAdminReceiver} which is the device owner, and will become the
     * profile owner and will be registered as an active admin on the new user. The profile owner
     * package will be installed on the new user.
     * <p>admin is the {@link DeviceAdminReceiver} which is the device owner. profileOwner is also
     * a DeviceAdminReceiver in the same package as admin, and will become the profile owner and
     * will be registered as an active admin on the new user. The profile owner package will be
     * installed on the new user.
     *
     * <p>If the adminExtras are not null, they will be stored on the device until the user is
     * started for the first time. Then the extras will be passed to the admin when
@@ -4147,18 +4147,21 @@ public class DevicePolicyManager {
     *
     * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
     * @param name The user's name.
     * @param profileOwner Which {@link DeviceAdminReceiver} will be profile owner. Has to be in the
     *      same package as admin, otherwise no user is created and an IllegalArgumentException is
     *      thrown.
     * @param adminExtras Extras that will be passed to onEnable of the admin receiver on the new
     *      user.
     * @param flags {@link SKIP_SETUP_WIZARD} is supported.
     * @param flags {@link #SKIP_SETUP_WIZARD} is supported.
     * @see UserHandle
     * @return the {@link android.os.UserHandle} object for the created user, or {@code null} if the
     *         user could not be created.
     * @hide
     */
    public UserHandle createAndManageUser(@NonNull ComponentName admin, @NonNull String name,
            @Nullable PersistableBundle adminExtras, int flags) {
            @NonNull ComponentName profileOwner, @Nullable PersistableBundle adminExtras,
            int flags) {
        try {
            return mService.createAndManageUser(admin, name, adminExtras, flags);
            return mService.createAndManageUser(admin, name, profileOwner, adminExtras, flags);
        } catch (RemoteException re) {
            Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
        }
+1 −1
Original line number Diff line number Diff line
@@ -179,7 +179,7 @@ interface IDevicePolicyManager {

    UserHandle createUser(in ComponentName who, in String name);
    UserHandle createAndInitializeUser(in ComponentName who, in String name, in String profileOwnerName, in ComponentName profileOwnerComponent, in Bundle adminExtras);
    UserHandle createAndManageUser(in ComponentName who, in String name, in PersistableBundle adminExtras, in int flags);
    UserHandle createAndManageUser(in ComponentName who, in String name, in ComponentName profileOwner, in PersistableBundle adminExtras, in int flags);
    boolean removeUser(in ComponentName who, in UserHandle userHandle);
    boolean switchUser(in ComponentName who, in UserHandle userHandle);

Loading