xref: /aosp_15_r20/frameworks/base/packages/SystemUI/docs/user-switching.md (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker# User Switching
2*d57664e9SAndroid Build Coastguard Worker
3*d57664e9SAndroid Build Coastguard WorkerMultiple users and the ability to switch between them is controlled by Settings -> System -> Multiple Users.
4*d57664e9SAndroid Build Coastguard Worker
5*d57664e9SAndroid Build Coastguard Worker## Entry Points
6*d57664e9SAndroid Build Coastguard Worker
7*d57664e9SAndroid Build Coastguard Worker### Quick Settings
8*d57664e9SAndroid Build Coastguard Worker
9*d57664e9SAndroid Build Coastguard WorkerIn the QS footer, an icon becomes available for users to tap on. The view and its onClick actions are handled by [MultiUserSwitchController][2]. Multiple visual implementations are currently in use; one for phones/foldables ([UserSwitchDialogController][6]) and one for tablets ([UserSwitcherFullscreenDialog][5]).
10*d57664e9SAndroid Build Coastguard Worker
11*d57664e9SAndroid Build Coastguard Worker### Bouncer
12*d57664e9SAndroid Build Coastguard Worker
13*d57664e9SAndroid Build Coastguard WorkerMay allow changing or adding new users directly from they bouncer. See [KeyguardBouncer][1]
14*d57664e9SAndroid Build Coastguard Worker
15*d57664e9SAndroid Build Coastguard Worker### Keyguard affordance
16*d57664e9SAndroid Build Coastguard Worker
17*d57664e9SAndroid Build Coastguard Worker[KeyguardQsUserSwitchController][4]
18*d57664e9SAndroid Build Coastguard Worker
19*d57664e9SAndroid Build Coastguard Worker## Components
20*d57664e9SAndroid Build Coastguard Worker
21*d57664e9SAndroid Build Coastguard WorkerAll visual implementations should derive their logic and use the adapter specified in:
22*d57664e9SAndroid Build Coastguard Worker
23*d57664e9SAndroid Build Coastguard Worker### [UserSwitcherController][3]
24*d57664e9SAndroid Build Coastguard Worker
25*d57664e9SAndroid Build Coastguard Worker* Contains the current list of all system users
26*d57664e9SAndroid Build Coastguard Worker* Listens for relevant events and broadcasts to make sure this list stays up to date
27*d57664e9SAndroid Build Coastguard Worker* Manages user switching and dialogs for exiting from guest users
28*d57664e9SAndroid Build Coastguard Worker* Is settings aware regarding adding users from the lockscreen
29*d57664e9SAndroid Build Coastguard Worker
30*d57664e9SAndroid Build Coastguard Worker## Visual Components
31*d57664e9SAndroid Build Coastguard Worker
32*d57664e9SAndroid Build Coastguard Worker### [UserSwitcherFullscreenDialog][5]
33*d57664e9SAndroid Build Coastguard Worker
34*d57664e9SAndroid Build Coastguard WorkerA fullscreen user switching activity, supporting add guest/user actions if configured.
35*d57664e9SAndroid Build Coastguard Worker
36*d57664e9SAndroid Build Coastguard Worker### [UserSwitchDialogController][6]
37*d57664e9SAndroid Build Coastguard Worker
38*d57664e9SAndroid Build Coastguard WorkerRenders user switching as a dialog over the current surface, and supports add guest user/actions if configured.
39*d57664e9SAndroid Build Coastguard Worker
40*d57664e9SAndroid Build Coastguard Worker[1]: /frameworks/base/packages/SystemUI/docs/device-entry/bouncer.md
41*d57664e9SAndroid Build Coastguard Worker[2]: /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserController.java
42*d57664e9SAndroid Build Coastguard Worker[3]: /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
43*d57664e9SAndroid Build Coastguard Worker[4]: /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java
44*d57664e9SAndroid Build Coastguard Worker[5]: /frameworks/base/packages/SystemUI/src/com/android/systemui/user/UserSwitcherFullscreenDialog.kt
45*d57664e9SAndroid Build Coastguard Worker[6]: /frameworks/base/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt
46