您可以通过多种方式配置设备。您客户的商家 则决定了您需要使用哪些配置方法。
设备配置基础知识
客户期望的设备配置部署场景 支持(如自带设备或公司自有)决定了您要采用的运营模式, (例如“设备所有者模式”或“资料所有者模式”)。同样, 您需要支持的操作和 Android 版本来确定 方法。
部署场景
在公司自有部署场景中,企业拥有和 完全控制其员工使用的设备。通常,组织会部署 需要严格监控和管理整个 设备。
支持自带设备部署方案的公司允许其 员工将个人自有设备带到工作场所,并使用这些设备 访问特权公司信息和应用。
操作模式
设备所有者模式支持公司自有部署 操作。在 Android 中,您的管理应用称为设备政策 控制器 (DPC)。DPC 强制在 Android 设备上实施政策,并且 当充当设备所有者时,它将管理整个设备。作为设备所有者 DPC 可执行设备级操作,如配置设备级 配置全局设置并恢复出厂设置。
资料所有者模式支持自带设备部署, 操作。企业可通过设备政策控制器 (DPC) 使用个人设备进行工作 向设备的主要用户账号添加工作资料。作品 个人资料与主要用户相关联,但是作为单独的个人资料。如 资料所有者,则设备政策控制器 (DPC) 仅管理设备上的工作资料,且 在工作资料之外进行有限控制。
设备所有者配置方法
您必须在初始设置期间配置设备所有者操作模式 或恢复出厂设置后。无法配置设备所有者模式 在任何其他时间在设备上执行相关操作。
根据具体使用场景, 配置设备所有者模式
- 在设备驱动流程中,IT 管理员可以使用 NFC 配置大型 设备数量。 此流程适用于 Google Play 企业版账号或 Google Workspace 账号 场景。
- 在用户驱动的流程中,具体选项取决于组织是否
使用 Google Workspace。
- 在 Google Workspace 场景中,用户自行添加 Google 账号 在初始设备设置期间,且 DPC 必须引导用户完成 设置设备所有者的步骤。由用户驱动的流程可帮助最终用户设置 这也是在设备不支持 NFC 时的替代方案。
- 如果组织不使用 Google Workspace,您应该使用 Google Play 企业版账号方法。
注意:如果您将应用的分发范围限制在特定国家/地区, Google Play、 在设备所有者配置期间,系统会忽略这些限制。 即使设备不在目标国家/地区,系统也会下载设备政策控制器 (DPC)。
资料所有者配置方法
配置资料所有者操作模式的推荐方法视情况而定 组织是否使用 Google Workspace。
- 对于 Google Workspace,推荐方法是 用户驱动的流程,也就是用户添加自己的 Google 账号、 且 DPC 将指导用户完成个人资料所有者设置步骤。
- 如果组织未使用 Google Workspace,推荐方法为 Google Play 企业版账号方法。
传统方法,即要求用户 手动安装 DPC。 它依赖于用户从 Google Play 下载并安装您的 DPC。 然后,DPC 将引导用户完成其余流程,以设置 个人资料所有者。
不同 Android 版本的密钥配置差异
部署场景 | 操作模式 | 配置方法 | 5.0、5.1 | 6.0 及更高版本 | 7.0 及更高版本 |
---|---|---|---|---|---|
公司自有 | 设备所有者 | 二维码 | ✓ | ||
Google Play 企业版账号 | ✓ | ✓ | |||
Google 账号 | ✓ | ✓ | |||
NFC | ✓ | ✓ | ✓ | ||
BYOD 自带数据 | 个人资料所有者 | Google Play 企业版账号 | ✓ | ✓ | ✓ |
Google 账号 | 5.11 | ✓ | ✓ | ||
手动 DPC 安装 | ✓ | ✓ | ✓ |
一般实现注意事项
以下是您在进行选择时需要考虑的事项 编写设备政策控制器 (DPC), 无论您实现何种操作模式。
Google Play 服务兼容性
通过 Google Play 服务 APK 指南 会指示开发者先对 Google Play 服务进行版本检查, 执行 API 事务因为尝试更新 Google Play 服务 会导致设备设置流程严重中断,则 DPC 不得 在设备配置完成之前尝试更新 Google Play 服务。
关于 DPC 与 Google Play 服务的兼容性,要点如下:
- DPC 应使用附带 特定设备
- DPC 不应依赖于未来 Google Play 版本中的新功能 服务在设备配置时可用。
设备配置完成后,DPC 可以提示用户更新 Google Play 服务,以便设备政策控制器 (DPC) 可以使用最新功能。但是,如果 功能由于某种原因不可用,DPC 必须正常回退到 设备出厂时的版本。
检索设备详细信息
由于传播延迟,系统可能最多需要 2 分钟才能调用 devices.get 将返回该设备的详细信息。
如果您的工作流程要求提供详细信息才能让最终用户使用设备或 则建议使用设备政策控制器 (DPC) 中的进度屏幕,并等到 调用成功。
个人资料所有者模式的实现注意事项
以下是您在进行选择时需要考虑的事项 编写您的 DPC 以实现资料所有者 运行模式
移除或停用个人设备政策控制器 (DPC)
在配置资料所有者操作模式时,DPC 开始运行 ,并启动创建工作资料的流程。 创建工作资料后,设备政策控制器 (DPC) 也会在工作内部运行 个人资料。工作资料中的 DPC 会完成配置过程。在 那么,个人资料中的 DPC 应停用自身或设备 用户应将其移除。
用户移除个人 DPC
- 个人 DPC 监听
ACTION_MANAGED_PROFILE_PROVISIONED
。 (对于 Android 5.1 设备,个人 DPC 应改为监听ACTION_MANAGED_PROFILE_ADDED
)。 - 个人 DPC 发起卸载请求
ACTION_UNINSTALL_PACKAGE
。 此操作会提示用户卸载个人 DPC。面向最佳用户 卸载过程应在配置流程中进行。
个人设备政策控制器 (DPC) 自行停用
- 个人 DPC 监听
ACTION_MANAGED_PROFILE_PROVISIONED
。 (对于 Android 5.1 设备,个人 DPC 应改为监听ACTION_MANAGED_PROFILE_ADDED
)。 - 如果适用,个人设备政策控制器 (DPC) 应释放设备管理员权限 然后再停用自身。
- 个人设备政策控制器 (DPC) 启动
setApplicationEnabledSetting
停用请求COMPONENT_ENABLED_STATE_DISABLED
参数。 - 用户可以在 Google Play 中重新启用个人 DPC。
设备所有者模式的实现注意事项
在编写 DPC 时,请考虑以下事项 实现设备所有者操作模式。
设备必须是新设备或恢复出厂设置
您必须在初始设置期间配置设备所有者操作模式 或恢复出厂设置后。无法设置设备所有者模式 配置的设备。
设备所有者模式使 DPC 能够完全控制设备。如果预配 进行初始设置之后的设备所有者模式:
- 恶意软件可能会创建设备所有者并控制设备。
- 如果已经有一些用户数据或应用,可能会导致隐私问题 。
仅在公司自有设备上设置设备所有者模式
您应仅在您标识的设备上配置设备所有者模式 所有者。您可以通过检测 唯一设备标识符(例如序列号),也可以使用专用的 获得授权可通过您的 EMM 注册设备的一组账号 政策。
如果您无法验证公司对设备的所有权,则必须创建一个故障安全机制 机制,这样才不会错误地配置设备所有者模式。例如: 您可以提示用户确认或执行一些明确的操作 然后才能配置设备所有者模式
启用系统应用
当 DPC 配置工作资料时,任何不带启动器图标的系统应用 自动获准运行 工作资料中具有启动器图标的系统应用被视为 您可以自行决定是否启用它们。
通过 Google Play 启用系统应用
通过 Google Play 启用系统应用 操作简单,而且应用有更新时,用户可及时获取。
启用使用 Android 框架 API 的系统应用
如果您希望用户在开始使用设备后立即看到系统应用,
在设备配置过程中启用系统应用。设备政策控制器 (DPC) 支持
根据软件包名称或通过 intent(使用
DevicePolicyManager.enableSystemApp()
。
您可以通过多种方式识别要启用和展示的系统应用 发送给 IT 管理员。
创建系统应用目录
在此方法中,每台设备会确定设备上的应用并发送 将数据传回 EMM 控制台。EMM 控制台会动态显示 以及创建设备政策时的数据 管理应用数量
如果设备上尚未配置工作资料,请提取 使用
queryIntentActivities()
:private List<ResolveInfo> getAppsWithLauncher() { Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); return getPackageManager().queryIntentActivities(i, 0); }
如果设备上已经配置了工作资料,请拉取 工作资料中的所有应用
PackageManager.GET_DISABLED_COMPONENTS
和PackageManager.GET_UNINSTALLED_PACKAGES
。在应用列表中查找系统应用
FLAG_SYSTEM
、 指示应用是否已安装在设备的系统映像中。
优点:
- 让 IT 管理员全面了解所有设备上的应用。
- 精细控制启用哪些应用。
缺点:
- 由于每台设备都有不同的应用目录,因此很难应用一个模型 为多种设备类型应用一项政策配置。
- 在 Google 地图中显示 OEM 专用应用数量可能比较困难 对 IT 管理员而言非常重要。
按功能对系统应用进行分类
如果 IT 管理员想要为一组设备启用某个系统应用, 他们会根据功能选择一款通用应用;例如“系统 浏览器”。然后,DPC 允许对该 intent 使用所有系统应用。
优点:
- 为 IT 管理员提供基于功能的简单启用方式。
- 确保在各种设备上都能实现一致的功能(至少 常见用例)。
缺点:
- 仅所有设备类型都支持的系统应用。
- IT 管理员可能希望推送应用的一个 OEM 版本(例如 Samsung® 浏览器),而非其他(例如 LG® 浏览器)。
- IT 管理员可能不想推送多个应用,但却无法阻止 如果存在多个 intent 处理程序,则会发生此错误。
仅支持已获批准的系统应用
与 OEM 合作确定具体的 OEM 软件包并仅支持相应软件包 EMM 控制台中的软件包。这样,你就能为 您不会知道这些配置, OEM 应用未托管在 Google Play 上。
优点:
- 大大简化了集成工作流程,并消除了极端情况 在前两种方法中存在问题。
- 您可以为 OEM 应用的受管配置编制目录并显示它们 在 EMM 控制台中向 IT 管理员显示。
- 能够与 OEM 建立密切的关系,以便支持旗舰设备。
缺点:
- 因此,可扩展性降低,消费者的选择也随之减少。
DPC 的测试场景
Test DPC 是一个开源 应用,用于在 DPC 应用中测试企业功能。 Test DPC 的下载地址: github 或 Google Play。 您可以使用 Test DPC 执行以下操作:
- 模拟 Android 中的功能
- 设置和强制执行政策
- 设置应用和 intent 限制
- 设置工作资料
- 设置全托管式 Android 设备
虽然 Test DPC 主要用作测试企业的工具 解决方案,您也可以将其用作 Android 版示例代码的源代码 功能。
自定义预配
在设备配置期间,系统界面会在 状态栏以及屏幕顶部的默认徽标。设置自定义颜色 和徽标,以便在设备政策控制器 (DPC) 和徽标之间提供一致的视觉过渡 系统界面,或允许管理员使用您的 EMM 控制台执行此操作。例如: 管理员可以上传公司徽标,或者自定义用来显示 通知。
设备政策控制器 (DPC) 使用
DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR
和
DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI
extra。
要设置自定义颜色,请使用
EXTRA_PROVISIONING_MAIN_COLOR
设置一个整数,表示设备期间要显示的主色
预配。将 extra(常量)置于如下 intent 中:
ACTION_PROVISION_MANAGED_PROFILE
或
ACTION_PROVISION_MANAGED_DEVICE
。
如需了解整数的表示方式,请参阅
颜色。
如需查看示例,请参阅
MAIN_COLOR
在 TestDPC 应用中。
要设置自定义徽标,请使用
EXTRA_PROVISIONING_LOGO_URI
设置在设备使用期间显示在屏幕顶部的图片
预配。将 extra(常量)置于如下 intent 中:
ACTION_PROVISION_MANAGED_PROFILE
或
ACTION_PROVISION_MANAGED_DEVICE
。
确保图片对设备而言具有合理的像素密度。
如需查看示例,请参阅
LOGO_URI
在 TestDPC 应用中。
二维码方法
二维码配置方法可通过以下方式设置和配置设备所有者模式: 从设置向导中扫描二维码。二维码包含 该键值对包含 DPC 配置所需的所有信息。 。
您的 EMM 控制台应该能够让 IT 管理员创建二维码 为他们想要配置的设备分配资源IT 管理员发送二维码 然后由最终用户扫描 二维码。
二维码配置的使用场景
某些设备(如平板电脑)不支持 NFC。二维码配置是 轻松预配分布式设备群,这些设备不支持 NFC。IT 管理员可以向用户发送二维码, 预配。
二维码配置不需要 Google 身份(例如 Google 网域) 或 Google 账号。使用 Android 但不使用 Google 的单位 Workspace,但没有 Google 身份。
与 NFC 一样,QR 码配置也支持自助服务终端和一次性部署, 不要求使用 Google 身份(或任何身份)。例如, 商店中的自助服务终端设备不归任何人所有,且不应有最终用户 身份。
创建二维码
用于二维码配置的有效二维码是一个采用 UTF-8 编码的 JavaScript® 对象 表示法 (JSON) 字符串。您可以在有效的二维码中添加以下属性:
始终必需
如果设备上尚未安装 DPC,则为必填项
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
建议在设备尚未连接到 Wi-Fi 时采用
可选
EXTRA_PROVISIONING_LOCALE
EXTRA_PROVISIONING_TIME_ZONE
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER
EXTRA_PROVISIONING_LOCAL_TIME
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_SKIP_ENCRYPTION
此示例会构建一个有效的二维码:
{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":
"com.emm.android/com.emm.android.DeviceAdminReceiver",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM":
"gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION":
"https://path.to/dpc.apk",
"android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false,
"android.app.extra.PROVISIONING_WIFI_SSID": "GuestNetwork",
"android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
"dpc_company_name": "Acme Inc.",
"emm_server_url": "https://server.emm.biz:8787",
"another_custom_dpc_key": "dpc_custom_value"
}
}
二维码配置过程
- 设置向导会提示用户点按欢迎屏幕 6 次。通过 必须在屏幕上的同一位置完成。
- 设置向导会提示用户连接到互联网,以便设置 向导可以下载二维码读取器。
- Google Play 服务下载了包含二维码识别功能的模块 引擎。
- 用户扫描其 IT 管理员提供的二维码。
- 设置向导会下载您的 DPC 应用并启动设备所有者
使用 Cloud Build
ACTION_PROVISION_MANAGED_DEVICE
。
Google Play 企业版账号方法
DPC 可以使用 Google Play 企业版账号配置方法进行设置 设备所有者模式或资料所有者模式。此配置方法是 。
Google Play 企业版账号的配置方法使用 DPC 支持库。 此客户端库可确保 Google Play 企业版顺畅运行 账号。此外,它还将保持与 Google Play 账号配置过程。
配置设备的前提条件
- 企业 ID 通过 EMM 身份和 ESA 创建并注册 如 创建并注册企业。
- EMM 控制台会识别用户的公司身份。
- 用户可以使用 EMM 接受的凭据登录 DPC 应用 通常是公司电子邮件凭据
设置商家资料所有者模式
您可以在运行 在自带设备场景中用作个人设备。
- 用户从 Google Play 手动下载您的 DPC 并启动。
- DPC 使用
ACTION_PROVISION_MANAGED_PROFILE
。 - 完成最后的设置步骤。
设置设备所有者模式
您必须在对设备进行初始设置期间配置设备所有者操作模式 新设备或恢复出厂设置后。无法在以下设备上配置设备所有者模式 在任何其他时间使用设备
在设备设置过程中,用户需要输入特殊的 DPC 专用令牌,
提示您添加账号。令牌的格式为 afw#DPC_IDENTIFIER
。对于
名为 ACME 的 EMM,则 afw#acme
会安装 ACME EMM 的默认 DPC。
每个 EMM 都必须向 Google 请求特定的 DPC 标识符,然后才能使用
在预配过程中启用
- 用户开启新设备或恢复出厂设置的设备以及设置向导 启动。
- 当系统提示您添加账号时,用户会在
afw#DPC_IDENTIFIER
格式,用于标识 EMM 的 DPC。 - 设置向导会使用令牌中的 DPC 标识符添加临时 Google 账号与设备相关联。此临时账号仅用于下载 适用于您的 EMM 的 DPC,且已在 Google Play 中移除 最后的设置步骤。
- DPC 使用
ACTION_PROVISION_MANAGED_DEVICE
。 - 完成最后的设置步骤。
所有操作模式的最终设置步骤
仅在完成初始设置步骤之后才执行这些步骤 个人资料所有者模式或设备所有者模式已完成。
DPC 确保设备可以支持 Google Play 企业版账号 方法是初始化 DPC 支持库:
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin); androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
如果您要在设备上设置设备所有者模式,此步骤将移除 为下载设备政策控制器 (DPC) 而添加的临时 Google 账号。
用户使用其 EMM 凭据登录 DPC。这些是 通常是公司电子邮件凭据
设备政策控制器 (DPC) 针对 通过 EMM 控制台进行身份验证的企业用户。
如果 EMM 控制台没有为用户提供 Google Play
userId
,则 通过调用以下代码来创建新用户:Users.insert()
。 如果您要配置设备所有者模式,请针对 专用设备部署)或用户账号(适用于公司自有部署)。通过调用 来设置设备政策
Devices.update
。 您应先设置政策,然后再将 Google Play 企业版账号添加到 否则此政策在短期内不会应用 一段时间后才会生效EMM 控制台通过以下方式请求
userId
的账号凭据: 呼叫Users.generateAuthenticationToken()
。 此身份验证令牌在短期内有效,不能重复使用。设备政策控制器 (DPC) 应 使用令牌以编程方式添加账号(这样做毫无用处 用户)。Google Play EMM API 会将身份验证令牌返回到 EMM 控制台。
EMM 控制台将身份验证令牌转发给 DPC。
DPC 使用
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
Google 账号方法
DPC 可以使用 Google 账号配置方法来设置设备所有者 模式或个人资料所有者模式。使用 Google 账号配置方法时, 在用户添加其设备后,DPC 将引导用户完成配置步骤 Google 账号。
当用户输入其 Google 账号凭据时:
- Google 身份验证服务器会对用户账号进行身份验证。
- 然后,身份验证服务器会与企业服务器通信,以查看 如果账号的域名是 Google Workspace 域名或 EMM 管理的网域。
- 如果是这样,系统会自动下载与网域关联的设备政策控制器 (DPC) 从 Google Play 下载并安装。
设置商家资料所有者模式
您可以在对某设备进行初始设置期间配置资料所有者的操作模式, 设备或用户使用设置 >添加账号。
- 账号身份验证可由用户从设置向导或设置 >添加账号。
- GMSCore 使用
ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE
启动工作资料配置。 - DPC 会自动下载到设备上,并使用
ACTION_GET_PROVISIONING_MODE
启动 处理程序来验证 DPC 是否支持工作资料配置。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
- 工作资料的额外信息,例如电子邮件地址。DPC 还将在此软件包中接收 is_setup_wizard。此软件包将包含在ACTION_GET_PROVISIONING_MODE
和ACTION_ADMIN_POLICY_COMPLIANCE
处理程序中。EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
- 要迁移到新工作资料的经过身份验证的账号的名称。
- 平台会执行工作资料配置。
- 配置工作资料后,DPC 会收到广播
ACTION_PROFILE_PROVISIONING_COMPLETE
。 设备政策控制器 (DPC) 的ACTION_ADMIN_POLICY_COMPLIANCE
处理程序会在工作资料中启动。工作资料创建完毕后 DPC 也在工作资料内运行。设备政策控制器 (DPC) 推送适用于 这个受管理的 Google 账号,可以确保设备未遭破解 状态,并验证政策是否已执行(例如要求 密码)。 - 个人资料中的 DPC 会自行停用或移除它。
![](https://developers.google.cn/static/android/work/images/post-suw.png?authuser=0000&hl=sl)
设置设备所有者模式或 COPE
您必须在对设备进行初始设置期间配置设备所有者操作模式 新设备或恢复出厂设置后。设备所有者模式无法添加到 在任何其他时间访问设备。
- 账号身份验证由用户通过设置向导启动。
- GMSCore 使用
ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE
启动设备所有者配置。 3. DPC 会自动下载到设备上,并使用GET_PROVISIONING_MODE
处理程序启动以选择所需的配置模式。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
- 工作资料的额外信息,例如语言区域、Wi-Fi、电子邮件地址。DPC 还将在此软件包中接收 is_setup_wizard。此套装将包含于ACTION_GET_PROVISIONING_MODE
中 和ACTION_ADMIN_POLICY_COMPLIANCE
处理程序。
- 平台将设备预配为所需的配置模式。
- 配置设备后,DPC 接收这些广播并启动 DPC 的
ACTION_ADMIN_POLICY_COMPLIANCE
处理程序: - DPC 使用
Global.DEVICE_PROVISIONED
的值 以验证设备是新设备还是恢复出厂设置(未配置):- 0 - 未配置。
- 1 - 已配置。
- DPC 通过推送政策来完成配置过程 受管设备,确保设备未处于破解状态;以及 验证政策是否已强制执行(例如要求输入密码)。
![](https://developers.google.cn/static/android/work/images/in-suw.png?authuser=0000&hl=sl)
Google 账号方法的实现注意事项
DPC 应通过查找 所用的启动 intent 中的特定 extra(请参阅
LaunchIntentUtil
):android.accounts.Account
类型的账号 - 表示 账号(通过设置向导或设置 >添加账号, 要求所发布的 DPC 管理设备或配置文件。- 布尔值 - 类型的
is_setup_wizard
,如果为 true,则 DPC 是在以下时间段内启动的: 在设置向导完成之前安装设置向导,否则从 设置 >添加账号或其他流程。
检查 DPC 是否作为 Google 账号方法的一部分启动 :
boolean isSynchronousAuthLaunch(Intent launchIntent) { return launchIntent.hasExtra("is_setup_wizard"); }
DPC 不应调用
finish()
然后再完成设置它还应该返回一个正数结果代码 (例如RESULT_OK
),因为 DPC 是通过以下方式启动的:startActivityForResult()
并等待结果。DPC 应等待配置进程返回结果代码,然后再 如果 DPC 设置流程到达发送点,则调用
finish()
ACTION_PROVISION_*
intent。使用startActivityForResult()
和onActivityResult()
启动ACTION_PROVISION_*
intent 时触发回调。(请参阅LaunchActivity
和SetupSyncAuthManagement
获取示例)。由于设置过程可能存在异步性质,DPC 不能依赖
RESULT_OK
的结果代码来指示 成功。唯一能保证的方法就是DeviceAdminReceiver
回调。RESULT_CANCELED
表示 在设置流程的同步部分被取消,DPC 应做出反应 至此。在以下示例中,DPC 启动配置并等待来自 activity 的结果代码:
Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE); startActivityForResult(intent, REQUEST_MANAGED_PROFILE); ... @Override public void onActivityResult(int req, int res, Intent i) { if (req == REQUEST_MANAGED_PROFILE) { if (res == Activity.RESULT_OK) { setResult(Activity.RESULT_OK); finish(); } else { Toast.makeText(this, “Provisioning failed”, Toast.LENGTH_SHORT).show(); } } }
如果存在以下情况,DPC 不应尝试设置设备所有者操作模式: 设备已经过配置(请参阅
ProvisioningStateUtil.isDeviceProvisioned()
)。 在此示例中,DPC 会检查设备是否已配置:public static boolean isDeviceProvisioned(Context context) { ContentResolver cr = context.getContentResolver(); return Settings.Global.getInt(cr, DEVICE_PROVISIONED, 0) != 0; }
可选。DPC 可以使用
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
extra 以将状态信息传递回DeviceAdminReceiver
(在资料所有者的情况下,该操作在工作资料内运行)。 TestDPC 使用此 extra 之后在 Google 账号流程中输入一组不同的活动 预配完成。有关详情,请参阅DeviceAdminReceiver
。public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver { @Override public void onProfileProvisioningComplete(Context context, Intent intent) { // Retrieve the admin extras bundle, which we can use to determine the original context for // Test DPC's launch. PersistableBundle extras = intent.getParcelableExtra( EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE); ...
若要设置工作资料,设备政策控制器 (DPC) 必须将添加的账号迁移到 新工作资料。为此,设备政策控制器 (DPC) 应通过 启动 intent
ACTION_PROVISION_MANAGED_PROFILE
。设备政策控制器 (DPC) 应向用户提供明确的号召性用语(例如 “完成”按钮)在设置结束时退出应用,这样用户就不会认为 他们进入了流的死胡同
DPC 应使用设置向导主题或布局库,以便用户 并且感觉与游戏浑然一体。
NFC 方法
DPC 可以使用 NFC 配置方法来设置设备所有者模式。在 NFC 配置方法(即 NFC 标签)时,您需要创建一个 NFC 编程器应用, 包含初始策略以及 Wi-Fi 配置、设置 客户在配置设备所有者时所需的配置详细信息 运行模式当您或您的客户在 Chrome 中 Android 设备,该设备就会成为编程设备。
要配置设备,IT 管理员需要开箱使用新设备 碰触到编程设备或 NFC 标签。高峰转移 配置到设备,以便其连接到互联网并下载 适当的策略和设置。然后,该设备将由您的 DPC 管理。
设备配置完毕后,Google Play 会在短时间内显示非受管设备 而不是获得批准的应用和合集 。这种延迟可能会持续几分钟到一小时。
创建 NFC 编程器应用和编程器设备
在搭载 Android 10 或更低版本的设备上,可以使用 Android Beam 执行以下操作: 完成 NFC 配置:
- 下载 NFC 编程器示例应用。 您可以原封不动地使用示例而不添加任何添加内容,也可以针对 使用默认值
- 在所选设备上安装程序员应用。
- 启动 NFC 编程器应用,然后选择 Load Defaults(加载默认值)
价格为
com.example.android.apis
。(此文字可能会因默认值而异 您自行设置的参数。)
配置客户设备
- 使用新设备或 恢复出厂设置。
- 验证设备是否停留在初始的欢迎屏幕上,即
会在开始播放时显示文本在
Ready to send:{...}
中指定 在程序员应用中执行相应操作。 - 等待 DPC:
<ph type="x-smartling-placeholder">
- </ph>
- 加密设备。
- 如果是码分多址 (CDMA) 设备:激活 在显示电话界面时展示电话号码(无需互动)。
- 设置 Wi-Fi 连接。
- 下载 com.example.android.apis 的 APK 文件。
- 安装 com.example.android.apis。
- 将 com.example.android.apis 中的 Sample Device Admin 设置为设备所有者。
- 显示成功的“消息框”。
- 返回首页后(系统会自动跳过设置向导),
检查是否已将 com.example.android.apis 设置为设备所有者:
<ph type="x-smartling-placeholder">
- </ph>
- 在设置 >安全 >设备管理员,请务必将“示例设备” 无法移除管理员。
- 在设置 >用户 >用户和个人资料 >您(所有者),请确保: 所有者账号是唯一可用的账号(一台设备只能有一个活跃账号) 设备所有者)。
其他资源
高级 NFC 介绍了各种主题,例如如何使用各种标签技术、写入 NFC 代码和前台调度。
手动 DPC 安装方法
如需使用手动 DPC 安装配置方法设置资料所有者模式,请执行以下操作: 用户从 Google Play 下载并安装您的 DPC。然后,DPC 引导用户完成剩余流程,以便为 受管理的 Google 账号。
设备政策控制器 (DPC) 可在创建受管 Google 账号之前或之后添加受管理的 Google 账号 工作资料。例如,DPC 可以根据 用户的 EMM 凭据,而不是提示输入受管理的 Google 账号 。
设置商家资料所有者模式
请先添加受管理的 Google 账号
- 用户从 Google Play 下载并安装您的 DPC。
- 设备政策控制器 (DPC) 会在创建工作资料之前添加受管理的 Google 账号
使用
AccountManager.addAccount()
。 - DPC 开始在个人资料中运行,并启动相应进程
使用以下命令创建工作资料:
<ph type="x-smartling-placeholder">
- </ph>
ACTION_PROVISION_MANAGED_PROFILE
- 配置工作资料。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
- 工作资料的额外信息,例如语言区域、Wi-Fi、电子邮件地址 地址。EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
- 要迁移到新工作的经过身份验证的账号的名称 个人资料。
- 工作资料中的 DPC 会完成配置过程。作业完成后 则 DPC 也在工作资料内运行。DPC 工作资料通过推送政策来完成配置流程 该受管理的 Google 账号,确保设备未遭到入侵 状态,以及验证政策是否已执行(例如,要求 密码)。
- 配置工作资料后,DPC 会收到广播
ACTION_PROFILE_PROVISIONING_COMPLETE
。 - 个人资料中的 DPC 将自身停用或移除。
![](https://developers.google.cn/static/android/work/images/google_acct_first.png?authuser=0000&hl=sl)
请先创建工作资料
- 用户从 Google Play 下载并安装您的 DPC。
- DPC 开始在个人资料中运行,并启动相应进程
使用以下命令创建工作资料:
<ph type="x-smartling-placeholder">
- </ph>
ACTION_PROVISION_MANAGED_PROFILE
- 配置工作资料。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
- 工作资料的额外信息,例如语言区域、Wi-Fi、电子邮件地址 地址。
- DPC 使用
AccountManager.addAccount()
。 - DPC 接收广播
ACTION_PROFILE_PROVISIONING_COMPLETE
并读取EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
。 - 工作资料中的 DPC 会完成配置过程。 创建工作资料后,设备政策控制器 (DPC) 也会在工作内部运行 个人资料。工作资料中的 DPC 通过以下方式完成配置过程: 推送政策,以确保设备 没有处于被破解状态,并且需要验证政策是否已执行 (例如要求输入密码)。
- DPC 使用
DevicePolicyManager.setProfileEnabled()
。 - 个人资料中的 DPC 将自身停用或移除。
![](https://developers.google.cn/static/android/work/images/work_profile_first.png?authuser=0000&hl=sl)
-
Android 5.1 中的 Google Account 方法仅支持个人资料所有者操作模式,而且用户只能通过设置 >添加账号。 ↩