Loading core/api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -32542,7 +32542,7 @@ package android.os { method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.QUERY_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.content.pm.UserProperties getUserProperties(@NonNull android.os.UserHandle); method public android.os.Bundle getUserRestrictions(); method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.os.Bundle getUserRestrictions(android.os.UserHandle); method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}) public java.util.List<android.os.UserHandle> getVisibleUsers(); method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}) public java.util.Set<android.os.UserHandle> getVisibleUsers(); method public boolean hasUserRestriction(String); method public boolean isDemoUser(); method public static boolean isHeadlessSystemUserMode(); core/java/android/os/IUserManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -130,7 +130,7 @@ interface IUserManager { boolean isUserRunning(int userId); boolean isUserForeground(int userId); boolean isUserVisible(int userId); List<UserHandle> getVisibleUsers(); int[] getVisibleUsers(); boolean isUserNameSet(int userId); boolean hasRestrictedProfiles(int userId); boolean requestQuietModeEnabled(String callingPackage, boolean enableQuietMode, int userId, in IntentSender target, int flags); Loading core/java/android/os/UserManager.java +9 −2 Original line number Diff line number Diff line Loading @@ -2904,12 +2904,19 @@ public class UserManager { */ @RequiresPermission(anyOf = {Manifest.permission.MANAGE_USERS, Manifest.permission.INTERACT_ACROSS_USERS}) public @NonNull List<UserHandle> getVisibleUsers() { public @NonNull Set<UserHandle> getVisibleUsers() { ArraySet<UserHandle> result = new ArraySet<>(); try { return mService.getVisibleUsers(); int[] visibleUserIds = mService.getVisibleUsers(); if (visibleUserIds != null) { for (int userId : visibleUserIds) { result.add(UserHandle.of(userId)); } } } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } return result; } /** Loading services/core/java/com/android/server/pm/UserManagerService.java +5 −4 Original line number Diff line number Diff line Loading @@ -1782,7 +1782,7 @@ public class UserManagerService extends IUserManager.Stub { } @Override public List<UserHandle> getVisibleUsers() { public int[] getVisibleUsers() { if (!hasManageUsersOrPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)) { throw new SecurityException("Caller needs MANAGE_USERS or INTERACT_ACROSS_USERS " + "permission to get list of visible users"); Loading @@ -1790,18 +1790,19 @@ public class UserManagerService extends IUserManager.Stub { final long ident = Binder.clearCallingIdentity(); try { // TODO(b/2399825580): refactor into UserDisplayAssigner IntArray visibleUsers; synchronized (mUsersLock) { int usersSize = mUsers.size(); ArrayList<UserHandle> visibleUsers = new ArrayList<>(usersSize); visibleUsers = new IntArray(); for (int i = 0; i < usersSize; i++) { UserInfo ui = mUsers.valueAt(i).info; if (!ui.partial && !ui.preCreated && !mRemovingUserIds.get(ui.id) && mUserVisibilityMediator.isUserVisible(ui.id)) { visibleUsers.add(UserHandle.of(ui.id)); visibleUsers.add(ui.id); } } return visibleUsers; } return visibleUsers.toArray(); } finally { Binder.restoreCallingIdentity(ident); } Loading Loading
core/api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -32542,7 +32542,7 @@ package android.os { method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.QUERY_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.content.pm.UserProperties getUserProperties(@NonNull android.os.UserHandle); method public android.os.Bundle getUserRestrictions(); method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.os.Bundle getUserRestrictions(android.os.UserHandle); method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}) public java.util.List<android.os.UserHandle> getVisibleUsers(); method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}) public java.util.Set<android.os.UserHandle> getVisibleUsers(); method public boolean hasUserRestriction(String); method public boolean isDemoUser(); method public static boolean isHeadlessSystemUserMode();
core/java/android/os/IUserManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -130,7 +130,7 @@ interface IUserManager { boolean isUserRunning(int userId); boolean isUserForeground(int userId); boolean isUserVisible(int userId); List<UserHandle> getVisibleUsers(); int[] getVisibleUsers(); boolean isUserNameSet(int userId); boolean hasRestrictedProfiles(int userId); boolean requestQuietModeEnabled(String callingPackage, boolean enableQuietMode, int userId, in IntentSender target, int flags); Loading
core/java/android/os/UserManager.java +9 −2 Original line number Diff line number Diff line Loading @@ -2904,12 +2904,19 @@ public class UserManager { */ @RequiresPermission(anyOf = {Manifest.permission.MANAGE_USERS, Manifest.permission.INTERACT_ACROSS_USERS}) public @NonNull List<UserHandle> getVisibleUsers() { public @NonNull Set<UserHandle> getVisibleUsers() { ArraySet<UserHandle> result = new ArraySet<>(); try { return mService.getVisibleUsers(); int[] visibleUserIds = mService.getVisibleUsers(); if (visibleUserIds != null) { for (int userId : visibleUserIds) { result.add(UserHandle.of(userId)); } } } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } return result; } /** Loading
services/core/java/com/android/server/pm/UserManagerService.java +5 −4 Original line number Diff line number Diff line Loading @@ -1782,7 +1782,7 @@ public class UserManagerService extends IUserManager.Stub { } @Override public List<UserHandle> getVisibleUsers() { public int[] getVisibleUsers() { if (!hasManageUsersOrPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)) { throw new SecurityException("Caller needs MANAGE_USERS or INTERACT_ACROSS_USERS " + "permission to get list of visible users"); Loading @@ -1790,18 +1790,19 @@ public class UserManagerService extends IUserManager.Stub { final long ident = Binder.clearCallingIdentity(); try { // TODO(b/2399825580): refactor into UserDisplayAssigner IntArray visibleUsers; synchronized (mUsersLock) { int usersSize = mUsers.size(); ArrayList<UserHandle> visibleUsers = new ArrayList<>(usersSize); visibleUsers = new IntArray(); for (int i = 0; i < usersSize; i++) { UserInfo ui = mUsers.valueAt(i).info; if (!ui.partial && !ui.preCreated && !mRemovingUserIds.get(ui.id) && mUserVisibilityMediator.isUserVisible(ui.id)) { visibleUsers.add(UserHandle.of(ui.id)); visibleUsers.add(ui.id); } } return visibleUsers; } return visibleUsers.toArray(); } finally { Binder.restoreCallingIdentity(ident); } Loading