page.title=Supporting Multiple Users
@jd:body
This document describes the Android multi-user feature. It allows more than one
user on a single Android device by separating their accounts and application
data. For instance, parents may let their children use the family tablet. Or a
critical team might share a mobile device for on-call duty.
Definitions
Before supporting multiple Android users, you should understand the basic
concepts involved. Here are the primary terms used when describing Android
users and accounts:
- User - Each user is intended to be used by a different physical person. Each user
has distinct application data and some unique settings, as well as a user
interface to explicitly switch between users. A user can run in the background
when another user is active; the system manages shutting down users to conserve
resources when appropriate. Secondary users can be created either directly via
the primary user interface or from a Device
Administration application.
- Account - Accounts are contained within a user but are not defined by a user. Nor is a
user defined by or linked to any given account. Users and profiles contain
their own unique accounts but are not required to have accounts to be
functional. The list of accounts differs by user. See the Account class definition.
- Profile - A profile has separated app data but shares some system-wide settings (for
example, Wi-Fi and Bluetooth). A profile is a subset of and tied to the
existence of a user. A user can have multiple profiles. They are created
through a Device
Administration application. A profile always has an immutable
association to a ‘parent’ user, defined by the user that created the profile.
Profiles do not live beyond the lifetime of the creating user.
- App - An application’s data exists within each associated user. App data is
sandboxed from other applications within the same user. Apps within the same
user can interact with each other via IPC. See Building Apps for Work.
User types
- Primary - The first user added to a device. The primary user cannot be removed except
by factory reset. This user also has some special privileges and settings only
it can set. The primary user is always running even when other users are in the
foreground.
- Secondary - Any user added to the device other than the primary user. They can be
removed by either themselves or the primary user and cannot impact other users
on a device. Secondary users can run in the background and will continue to
have network connectivity when they do.
- Guest - A guest user is a temporary secondary user with an explicit option to quick
delete the guest user when its usefulness is over. There can be only one guest
user at a time.
Profile types
- Managed - Managed profiles are created by an application to contain work data and
apps. They are managed exclusively by the ‘profile owner’, the app who created
the corp profile. Launcher, notifications and recent tasks are shared by the
primary user and the corp profile.
- Restricted - Restricted profiles use the accounts based off the primary user. The Primary
user can control what apps are available on the restricted profile. Restricted
profiles are available only on tablets.
Effects
When users are added to a device, some functionality will be curtailed when
another user is in the foreground. Since app data is separated by user, the
state of those apps differs by user. For example, email destined for an account
of a user not currently in focus won’t be available until that user and account
are active on the device.
The default state is only the primary user has full access to phone calls and
texts. The secondary user may receive inbound calls but cannot send or receive
texts. The primary user must enable these functions for others.
Note: To enable or disable the phone and SMS functions for a secondary user, go to
Settings > Users, select the user, and switch the Allow phone calls and SMS setting to off.
Please note, some restrictions exist when a secondary user is in background.
For instance, the background secondary user will not be able to display the
user interface or make Bluetooth services active. Finally, background secondary
users will be halted by the system process if the device needs additional
memory for operations in the foreground user.
Here are aspects of behavior to keep in mind when employing multiple users on
an Android device:
- Notifications appear for all accounts of a single user at once.
- Notifications for other users do not appear until they are active.
- Each user gets his or her own workspace to install and place apps.
- No user has access to the app data of another user.
- Any user can affect the installed apps for all users.
- The primary user can remove apps or even the entire workspace established by
secondary users.
Implementation
Managing users
Management of users and profiles (with the exception of restricted profiles) is
performed by applications that programmatically invoke API in the DevicePolicyManager class to restrict use.
Schools and enterprises may employ users and profiles to manage the lifetime
and scope of apps and data on devices. They may use the types outlined above in
conjunction with the UserManager API to build unique solutions tailored to their use cases.
Applying the overlay
The multi-user feature is disabled by default in the Android 5.0 release. To
enable it, device manufacturers must define a resource overlay that replaces
the following values in frameworks/base/core/res/res/values/config.xml:
<!-- Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!-- Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>
To apply this overlay and enable guest and secondary users on the device, use the
DEVICE_PACKAGE_OVERLAYS feature of the Android build system to:
- Replace the value for
config_multiuserMaximumUsers with one greater than 1
- Replace the value of
config_enableMultiUserUI with: true
Device manufacturers may decide upon the maximum number of users.
That said, if device manufacturers or others have modified settings, they need
to ensure SMS and telephony work as defined in the Android Compatibility Definition
Document (CDD).