支持多用户

通过分离用户帐号和应用数据,Android 支持在一台 Android 设备上添加多个用户。例如,父母可能会允许子女使用家庭平板电脑,一家人可以共用一辆汽车,或者应急响应团队可能会共用一部移动设备随时待命。

术语

Android 在描述 Android 用户和帐号时会使用以下术语。

常规

Android 设备管理使用以下常规术语。

  • 用户:每个用户意指一个自然人。每个用户都有不同的应用数据和一些独特的设置,以及可在多个用户之间明确切换的用户界面。当某个用户处于活动状态时,另一个用户可以在后台运行;系统会在适当的时候关闭用户以节约资源。次要用户可以直接通过主要用户界面进行创建,也可以通过设备管理应用进行创建。
  • 帐号:帐号包含在用户中,但并非由用户定义;用户既不由任何给定帐号定义,也不关联到任何给定帐号。用户和个人资料包含其各自的唯一帐号;不过,即使没有帐号,用户和个人资料也可以正常发挥作用。帐号列表因用户而异。如需了解详情,请参阅 Account 类的定义。
  • 个人资料:个人资料具有独立的应用数据,但会共享一些系统范围内的设置(例如 WLAN 和蓝牙设置)。个人资料会与已存在用户绑定在一起,并是已存在用户的子集。一个用户可以有多份个人资料。个人资料通过设备管理应用进行创建。个人资料由创建个人资料的用户定义,它与父用户之间总是存在不可变的关联。个人资料的存在时间不会超出创建用户的生命周期。
  • 应用:应用的数据存在于各个关联的用户中。一个应用的数据与同一用户的其他应用的数据以沙盒的形式隔离。同一用户的应用可以通过 IPC 彼此交互。如需了解详情,请参阅Android 企业版

用户类型

Android 设备管理使用以下用户类型。

  • 主要用户:添加到设备的第一个用户。除非恢复出厂设置,否则无法移除主要用户;此外,即使其他用户在前台运行,主要用户也会始终处于运行状态。此类用户还拥有特殊权限和只有自己可以设置的设置。
  • 次要用户:除主要用户之外添加到设备的任何用户。次要用户可以移除(由用户自行移除或由主要用户移除),且不会影响设备上的其他用户。此类用户可以在后台运行且可以继续连接到网络。
  • 访客用户:临时的次要用户。访客用户设置中有明确的删除选项,当访客用户不再有用时,可快速将其删除。一次只能有一个访客用户。

个人资料类型

Android 设备管理使用以下个人资料类型。

  • 受管理个人资料:由应用创建,包含工作数据和应用。受管理个人资料专门由个人资料所有者(创建企业资料的应用)管理。启动器、通知和最近的任务由主要用户和企业资料共享。
  • 受限个人资料:由主要用户控制的帐号,主要用户可以控制受限个人资料上哪些应用可用。仅适用于平板电脑和电视设备。

启用多用户功能

从 Android 5.0 开始,多用户功能默认处于停用状态。要启用这项功能,设备制造商必须定义一个资源叠加层,以替换 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>
    

要应用此叠加层并在设备上启用访客用户和次要用户,请使用 Android 构建系统的 DEVICE_PACKAGE_OVERLAYS 功能执行以下操作:

  • config_multiuserMaximumUsers 的值替换为大于 1 的值
  • config_enableMultiUserUI 的值替换为 true

设备制造商可以决定用户数上限。如果设备制造商或其他人修改了设置,他们必须确保短信和电话应用按照 Android 兼容性定义文档 (CDD) 中的说明运转。

管理多用户

程序化地调用 DevicePolicyManager 类中的 API 的应用负责管理用户和个人资料(受限个人资料除外),并对用户和个人资料的使用加以限制。

学校和企业可以将上述类型与 UserManager API 结合使用,以针对其用例构建独特的解决方案,从而借助用户和个人资料来管理设备上应用和数据的生命周期和适用范围。

多用户系统行为

将用户添加到设备后,当其他用户在前台活动时,一些功能会受限制。由于应用数据会按用户分开,因此这些应用的状态也会因用户而异。例如,如果某个用户当前不在前台,那么在该用户及其帐号在设备上处于活动状态之前,发往该帐号的电子邮件将无法查看。

默认情况下,只有主要用户拥有通话和短信的完全访问权限。次要用户可以接听呼入电话,但是不能发送或接收短信。主要用户必须为其他人启用这些功能,他们才能使用这些功能。

注意:要为次要用户启用或停用电话和短信功能,请依次转到“设置”>“用户”,选择相应用户,然后将“允许接打电话和收发短信”设置切换到关闭状态。

次要用户在后台活动时会受到一些限制。例如,后台次要用户无法显示界面或开启蓝牙服务。此外,如果设备需要更多内存才能满足前台用户的操作需求,系统进程将暂停后台次要用户的活动。

在 Android 设备上使用多用户功能时,请注意以下几点:

  • 通知会同时出现在一个用户的所有帐号中。
  • 其他用户的通知在激活用户后才会显示。
  • 每位用户都会获得用于安装和放置应用的工作区。
  • 任何用户都无权访问其他用户的应用数据。
  • 任何用户都可以影响为所有用户安装的应用。
  • 主要用户可以移除次要用户所创建的应用甚至整个工作区。

Android 7.0 具备一些增强功能,包括:

  • 切换工作资料:用户可以停用其受管理个人资料(例如,在不工作时)。这项功能可以通过停止用户来实现;UserManagerService 会调用 ActivityManagerNative#stopUser()
  • 始终开启的 VPN:VPN 应用现在可以由用户、设备政策控制器 (DPC) 或受管理个人资料 DPC(仅适用于受管理个人资料应用)设为始终开启。启用后,应用将无法访问公共网络(在连接 VPN 且连接可以通过它正常路由前,无法访问网络资源)。报告 device_admin 的设备必须实现始终开启的 VPN。

如需详细了解 Android 7.0 设备管理功能,请参阅 Android for Work

Android Automotive 多用户

Android Automotive 依靠 Android 的多用户实现来提供共用设备体验。

Automotive 用户类型

值得注意的是,除了上面列出的用户类型之外,Automotive 版本还包含以下类型的用户:

  • 无头系统用户:此类系统用户负责托管所有系统服务。要在 Automotive 中支持多用户,系统用户也必须是无头用户。只有一个无头用户。无头系统用户应遵守以下要求:
    • 必须始终在后台运行。
    • 无法直接由用户移除或访问,除非是在“设备配置”的情况下。例如,用户无法切换到这种用户类型来执行下载应用或添加帐号等任务。
    • 只能通过恢复出厂设置清除。
  • 常规用户:与上文所述的次要用户相同,不过此类次要用户应遵守以下要求:
    • 不会在后台运行(在切换成其他用户之后)。
    • 可通过界面直接创建。
    • 具有独立的应用数据,但会共享一些系统范围内的设置。例如,WLAN 和蓝牙。

注意事项

以下例外情况适用于 Automotive 中的无头系统用户和常规(次要)用户:

  • 无头系统用户不支持工作资料。
  • 默认情况下,常规(次要)用户拥有通话和短信的完全访问权限。
  • 默认情况下,常规(次要)用户不会在后台运行。

启用无头系统用户

从 Android 10 开始,多用户功能可用于 Automotive 用例。重要区别包括:

  • 系统用户是无头用户,仅在后台运行。
  • 人类用户不与系统用户互动。

要启用无头系统用户,设备制造商必须按照上文所述启用多用户功能。

启用无头用户后:
  • 要将设备声明为 Automotive,请添加 android.hardware.type.automotive 功能
  • ro.fw.multiuser.headless_system_user 设为 true
  • config_multiuserMaximumUsers 的值设为 2(或更高的值)

如需了解详情,请参阅 Automotive 中的多用户支持