工作资料是一种受管理资料,它将应用数据与主要用户的个人资料分开,但共用一些系统级设置,例如 Wi-Fi 和蓝牙。工作资料的主要目的是为受管理的数据创建一个隔离且安全的存储容器。工作资料管理员可以全权控制数据的范围、入站流量、出站流量和数据生命周期。以下是工作资料的一些特征:
创建。主用户中的任何应用都可以创建工作资料。用户在创建工作资料之前,会收到工作资料行为和政策执行的通知。
管理。称为资料所有者的应用可以通过编程方式调用
DevicePolicyManager
类中的 API 以限制使用。资料所有者在初始资料设置时定义。工作资料独有的政策涉及应用限制、可更新性和 intent 行为。外观处理。工作资料中的应用、通知和 widget 带有标记,并且通常内嵌在主用户的界面元素中。
实现详情
工作资料以次要用户的身份实现,因此在工作资料中运行的应用的 UID 为 uid = 100000 \* userid + appid
。与主要用户类似,这些资料也有单独的应用数据 (/data/user/userid
)。
AccountManagerService
为每个用户保留了一个单独的账号列表。工作资料用户和常规次要用户之间的账号差异包括:
工作资料与其父用户相关联,并在启动时与主用户一起启动。
工作资料通知由
ActivityManagerService
启用,可使工作资料与主用户共享 activity 堆栈。其他共享系统服务包括 IME、A11Y 服务、Wi-Fi 和 NFC。
借助启动器 API,可使启动器在主资料中的应用旁显示工作资料中带有标记的应用和已列入许可名单的 widget,而无需切换用户。
数据隔离
工作资料使用以下数据隔离规则。
应用
当主用户和工作资料中存在同一应用时,应用使用自己的隔离数据进行限定。通常情况下,应用的操作相互独立,无法跨越资料和用户之间的边界直接与实例通信,除非这些应用具有 INTERACT_ACROSS_PROFILES
权限或 App-ops。
账号
工作资料中的账号在主用户中具有唯一性,无法跨越资料和用户之间的边界访问各自的账号。只有在各自环境中的应用才能访问其各自的账号。
Intent
管理员可以控制是否在工作资料中解析 intent。默认情况下,工作资料中应用的范围被限定在工作资料内,但设备政策 API 除外。
设备标识符
在具有工作资料的个人设备上,Android 12 或更高版本移除了对设备硬件标识符(IMEI、MEID、序列号)的访问权限,并提供了唯一的注册专用 ID 来标识特定组织的工作资料注册。注册 ID 在恢复出厂设置后保持稳定,从而对具有工作资料的设备进行可靠的库存跟踪。
具有工作资料的个人设备必须使用注册专用 ID;公司自有设备(包括工作资料和全托管式设备)也可以选择启用该 ID。如需使用注册专用 ID,EMM 必须为其管理的每台设备设置组织 ID,之后 EMM 就可以读取该设备上的注册专用 ID,并将其处理为序列号。有关详情,请参阅工作资料的安全和隐私权增强功能。
设置
设置的强制执行范围限制于工作资料,但锁定屏幕和加密设置仅限于设备并在主用户和工作资料之间共享。除了这些例外情况,资料所有者在工作资料之外没有设备管理员权限。
具有工作资料的设备上的设备管理
Android 5.0 及更高版本支持使用 DevicePolicyManager
类对属于自带设备 (BYOD) 的个人设备上的工作资料进行设备管理。此外,Android 11 还引入了公司自有设备上的工作资料概念。对于自带设备和公司自有设备的情形,工作资料下的设备管理功能不变,但公司自有设备上的工作资料可能会提供其他功能/政策(例如 installSystemUpdate
、setScreenCaptureDisabled
和 setPersonalAppsSuspended
),可以针对特定设备级政策将管理员政策的执行范围扩展到工作资料之外。
个人设备 (BYOD) 上的工作资料:设备是个人设备,其中包含由与雇主关联的 IT 管理员管理的工作资料。
公司自有设备上的工作资料:设备由雇主提供/拥有,其中包含由与雇主关联的 IT 管理员管理的工作资料。应用可以通过调用
isOrganizationOwnedDeviceWithManagedProfile()
确定设备是否已被预配为具有受管理资料的单位自有设备。
如需详细了解如何创建工作资料及如何使用设备政策 API,请参阅创建工作资料。
资料所有者
Device Policy Client (DPC) 应用会在创建工作资料时充当资料所有者。DPC 客户端应用通常由企业移动管理 (EMM) 合作伙伴(如 Google Apps Device Policy)提供,在设为资料所有者的情况下能够强制执行政策。工作资料具有应用的标记实例,这些应用在视觉上与个人应用实例不同;标记可将应用标识为工作应用。EMM 仅对工作资料(工作应用和数据)进行控制,而不对个人空间进行控制。设备政策仅在工作资料中强制执行,但有一些例外情况,例如强制锁屏适用于整个设备。
工作资料用户体验
Android 9 或更高版本在工作资料和 Android 平台之间创建了更紧密的集成,使用户可以在其设备上更轻松地将工作和个人信息隔离开来。工作资料更改会显示在启动器中,并会在所有受管设备上提供一致的用户体验。
用户可以通过“设置”或“快捷设置”菜单切换工作资料。在 Android 9 或更高版本中,设备实现可能包括在工作标签页页脚中显示切换开关,以便用户启用或停用工作资料。工作资料的启用和停用是异步完成的,并且会应用于所有有效的用户资料;此过程由 WorkModeSwitch
类控制。
具有应用托盘的设备
在 Android 9 或更高版本中,Launcher3 的工作资料用户体验变化有助于用户维护单独的个人资料和工作资料。应用抽屉提供了一个标签式视图,用于区分个人资料应用和工作资料应用。当用户首次查看工作资料标签页时,系统会显示一个指导视图,以协助用户浏览工作资料。
用户可以使用应用抽屉顶部的资料标签页或类似的界面在不同资料视图之间切换:
图 1. 个人标签视图
图 2. 工作标签视图、工作资料切换开关
标签式视图在 Launcher3 类 AllAppsContainerView
中实现。如需查看标签式资料指示器的参考实现,请参阅 PersonalWorkSlidingTabStrip
类。
具有工作标签页的设备中的用户指导消息
Android 9 或更高版本支持指导视图,可让用户了解工作标签页的用途,以及可让用户更轻松地访问工作应用。借助 Launcher3,当用户首次打开工作标签页时,系统可以在工作标签页屏幕中显示指导视图,如下图所示:
图 3. 指导视图
没有应用托盘的设备
对于没有应用托盘的启动器,建议继续将工作资料应用的快捷方式放置在工作文件夹中。
对于工作资料用户,自定义启动器实现可以使用 getProfiles()
和 getActivityList()
检索带有启动器图标的应用列表。
在实现工作文件夹的设备上,用户可以通过打开工作文件夹来访问工作资料应用:
图 4. 已关闭工作文件夹
图 5. 已打开工作文件夹
具有工作文件夹的设备中的用户指导消息
对于没有应用托盘的启动器(工作文件夹包含工作应用),当用户首次打开工作文件夹时,系统可能会以可关闭的提示形式显示工作资料说明消息:
图 3. 可关闭的提示
验证工作资料用户体验
如需测试工作资料用户体验,最简单的方法是使用 Test DPC 应用设置工作资料。以下步骤介绍了如何在个人设备(自带设备场景)上设置工作资料:
从恢复出厂设置的设备开始,使用个人 Google 账号完成个人资料设置;也可以从设有个人资料的设备开始进行测试。
从 Google Play 商店安装 Test DPC 应用。
打开启动器或应用抽屉,然后选择设置 Test DPC。
按照屏幕上的说明设置工作资料:
图 4. 设置工作资料
图 5. 添加账号
图 6. 设置已完成打开启动器或应用抽屉,并验证工作标签页是否存在且包含工作资料页脚。设备制造商在实现过程中也可以选择包含工作文件夹,而不是工作标签页。
通过确认工作资料应用(带有公文包标记的应用)是否按预期启用和停用,可验证您是否可以从“快捷设置”(或“设置”)启用和停用工作资料。在某些设备实现中,当工作资料停用时,工作应用可能会灰显;而在其他实现中(例如具有工作标签页的实现),则可能会显示一个叠加层,其中显示一条消息,告知工作资料已停用。下图显示了在实现工作标签页的设备上启用和停用工作资料的示例:
图 7. 开启、启用工作资料
图 8. 关闭、停用工作资料
工作资料应用标志
在 Android 9 或更高版本中,出于无障碍原因,工作标志的颜色为蓝色 (#1A73E8),而不是橙色。