summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/pm/multiuser.aconfig10
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java11
2 files changed, 20 insertions, 1 deletions
diff --git a/core/java/android/content/pm/multiuser.aconfig b/core/java/android/content/pm/multiuser.aconfig
index 813208d7ff38..c9efdf173702 100644
--- a/core/java/android/content/pm/multiuser.aconfig
+++ b/core/java/android/content/pm/multiuser.aconfig
@@ -457,6 +457,16 @@ flag {
}
flag {
+ name: "get_user_switchability_permission"
+ namespace: "multiuser"
+ description: "Update permissions for getUserSwitchability"
+ bug: "390458180"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "restrict_quiet_mode_credential_bug_fix_to_managed_profiles"
namespace: "profile_experiences"
description: "Use user states to check the state of quiet mode for managed profiles only"
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index b2b8aaf7dd2a..e7a5c1a58a00 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -2916,7 +2916,16 @@ public class UserManagerService extends IUserManager.Stub {
* switchable.
*/
public @UserManager.UserSwitchabilityResult int getUserSwitchability(int userId) {
- checkManageOrInteractPermissionIfCallerInOtherProfileGroup(userId, "getUserSwitchability");
+ if (Flags.getUserSwitchabilityPermission()) {
+ if (!hasManageUsersOrPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)) {
+ throw new SecurityException(
+ "You need MANAGE_USERS or INTERACT_ACROSS_USERS permission to "
+ + "getUserSwitchability");
+ }
+ } else {
+ checkManageOrInteractPermissionIfCallerInOtherProfileGroup(userId,
+ "getUserSwitchability");
+ }
final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
t.traceBegin("getUserSwitchability-" + userId);