Add a flag for creating an ephemeral user with
DevicePolicyManager#createAndManageUser.
BUG: 24883058
Change-Id: I225ee6f1f6692663349040676e7a6c742b3ede79
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 879d663..2ea215e 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -4187,6 +4187,13 @@
public static final int SKIP_SETUP_WIZARD = 0x0001;
/**
+ * Flag used by {@link #createAndManageUser} to specify that the user should be created
+ * ephemeral.
+ * @hide
+ */
+ public static final int MAKE_USER_EPHEMERAL = 0x0002;
+
+ /**
* 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
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 04820a1..cf84b2f 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -6507,7 +6507,11 @@
final long id = mInjector.binderClearCallingIdentity();
try {
- UserInfo userInfo = mUserManager.createUser(name, 0 /* flags */);
+ int userInfoFlags = 0;
+ if ((flags & DevicePolicyManager.MAKE_USER_EPHEMERAL) != 0) {
+ userInfoFlags |= UserInfo.FLAG_EPHEMERAL;
+ }
+ UserInfo userInfo = mUserManager.createUser(name, userInfoFlags);
if (userInfo != null) {
user = userInfo.getUserHandle();
}