diff options
| author | 2019-10-02 16:27:46 -0700 | |
|---|---|---|
| committer | 2019-10-18 11:05:09 -0700 | |
| commit | 0b3863f4ac2a34e488ad38d078927852728537a9 (patch) | |
| tree | 2f56fe80ba77ffa610e56376abeb30ddb164a3ce | |
| parent | 7ad2f6bdad6f789ed7d1b32ab9e2dcf006026201 (diff) | |
Added new (hidden) UserManager API to get all users, including pre-created ones.
Bug: 140750212
Test: manual verification
Merged-In: Iaef9db6216a7b18bf6f1f3e19f4a7428ec99f1da
Change-Id: Iaef9db6216a7b18bf6f1f3e19f4a7428ec99f1da
(cherry picked from commit 09a7f2df68192b9aa77577de14a6a7018e992caf)
| -rw-r--r-- | core/java/android/os/IUserManager.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/os/UserManager.java | 38 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/UserManagerService.java | 6 |
3 files changed, 26 insertions, 20 deletions
diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl index ed76077e5c79..c30491a3965c 100644 --- a/core/java/android/os/IUserManager.aidl +++ b/core/java/android/os/IUserManager.aidl @@ -54,7 +54,7 @@ interface IUserManager { void setUserIcon(int userHandle, in Bitmap icon); ParcelFileDescriptor getUserIcon(int userHandle); UserInfo getPrimaryUser(); - List<UserInfo> getUsers(boolean excludeDying); + List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated); List<UserInfo> getProfiles(int userHandle, boolean enabledOnly); int[] getProfileIds(int userId, boolean enabledOnly); boolean canAddMoreManagedProfiles(int userHandle, boolean allowedToRemoveOne); diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index eb1927ebd83a..af9e592f9036 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -2379,15 +2379,26 @@ public class UserManager { /** * Returns information for all users on this device, including ones marked for deletion. * To retrieve only users that are alive, use {@link #getUsers(boolean)}. - * <p> - * Requires {@link android.Manifest.permission#MANAGE_USERS} permission. + * * @return the list of users that exist on the device. * @hide */ @UnsupportedAppUsage + @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public List<UserInfo> getUsers() { + return getUsers(/* excludeDying= */ false); + } + + /** + * Returns information for all users on this device, based on the filtering parameters. + * + * @hide + */ + @RequiresPermission(android.Manifest.permission.MANAGE_USERS) + public List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, + boolean excludePreCreated) { try { - return mService.getUsers(false); + return mService.getUsers(excludePartial, excludeDying, excludePreCreated); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } @@ -2403,16 +2414,12 @@ public class UserManager { @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public long[] getSerialNumbersOfUsers(boolean excludeDying) { - try { - List<UserInfo> users = mService.getUsers(excludeDying); - long[] result = new long[users.size()]; - for (int i = 0; i < result.length; i++) { - result[i] = users.get(i).serialNumber; - } - return result; - } catch (RemoteException re) { - throw re.rethrowFromSystemServer(); + List<UserInfo> users = getUsers(excludeDying); + long[] result = new long[users.size()]; + for (int i = 0; i < result.length; i++) { + result[i] = users.get(i).serialNumber; } + return result; } /** @@ -2798,11 +2805,8 @@ public class UserManager { */ @UnsupportedAppUsage public @NonNull List<UserInfo> getUsers(boolean excludeDying) { - try { - return mService.getUsers(excludeDying); - } catch (RemoteException re) { - throw re.rethrowFromSystemServer(); - } + return getUsers(/*excludePartial= */ true, excludeDying, + /* excludePreCreated= */ true); } /** diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index ed60aa54212f..338811efd4ea 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -650,12 +650,12 @@ public class UserManagerService extends IUserManager.Stub { return null; } - @Override public @NonNull List<UserInfo> getUsers(boolean excludeDying) { return getUsers(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true); } - private @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, + @Override + public @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated) { checkManageOrCreateUsersPermission("query users"); synchronized (mUsersLock) { @@ -2700,6 +2700,8 @@ public class UserManagerService extends IUserManager.Stub { Preconditions.checkArgument(!UserInfo.isManagedProfile(flags), "cannot pre-create managed profiles"); + Slog.i(LOG_TAG, "Pre-creating user with flags " + UserInfo.flagsToString(flags)); + return createUserInternalUnchecked(/* name= */ null, flags, /* parentId= */ UserHandle.USER_NULL, /* preCreate= */ true, /* disallowedPackages= */ null); |