开发者指南

Android 的企业功能可为组织提供一个安全、灵活、统一的 Android 移动平台,将设备、应用和管理结合在一起。默认情况下,Android 应用与 Android 的企业功能兼容。不过,您还可以使用其他功能让您的应用在受管理的 Android 设备上实现最佳性能:

  • 工作资料兼容性 - 修改您的 Android 应用,使其在受管设备上发挥最佳性能。
  • 托管配置 - 修改您的应用,让 IT 管理员可以选择为您的应用指定自定义设置。
  • 专用设备 - 优化您的应用,以便将其作为自助服务终端部署在 Android 设备上。
  • 单点登录 (SSO) - 简化用户在受管理 Android 设备上登录不同应用的登录流程。

前提条件

  1. 您已经创建了一个 Android 应用。
  2. 您现在可以修改应用,使其更适合组织。
  3. 最低版本:Android 5.0 Lollipop 推荐版本:Android 6.0 Marshmallow 及更高版本。

注意:大多数 Android 5.0 设备中都内置了 Android 的企业功能;不过,Android 6.0 及更高版本提供额外的功能,尤其是对于专用设备。

工作资料

您可以通过工作资料管理用户的业务数据和应用。工作资料是与 Android 设备上的主用户帐号关联的受管理工作资料。工作资料将工作应用和数据与个人应用和数据安全地隔离开来。此工作资料位于与用户控制的个人资料不同的容器中。利用这些单独的资料,组织可以管理其关注的商家数据,而将用户设备上的所有其他内容则仍由用户自行控制。 如需深入了解最佳实践,请参阅工作资料指南。如需简要了解这些最佳实践,请参阅下文。

工作资料的主要功能

  • 单独的安全资料
  • 用于应用分发的 Google Play 企业版
  • 单独的带标记的工作申请
  • 由管理员控制的仅限资料管理功能

Android 5.0+ 中的工作资料优势

  • 全设备加密
  • 设备上具有个人资料和工作资料时,这两种资料需使用一个 Android 应用软件包 (APK)
  • 设备政策控制器 (DPC) 仅限于工作资料
  • 通过 DevicePolicyManager 类进行设备管理

工作资料的注意事项

  • Android 系统会阻止 intent 跨个人资料,而 IT 管理员可以启用或停用系统应用
  • 在某个个人资料中有效的文件路径(统一资源标识符 [URI])可能在另一个个人资料中无效。

防止 intent 在资料之间失败

很难知道哪些 intent 可以在个人资料之间交叉,以及哪些 intent 会被屏蔽。确定已知的唯一方法是通过测试确定。在您的应用启动 Activity 之前,您应通过调用 Intent.resolveActivity() 来验证请求是否已解析。

  • 如果它返回 null,则请求无法解析。
  • 如果它返回内容,则表明该 intent 已解析,因此可以安全发送该 intent。

注意:如需详细了解测试说明,请参阅防止出现失败的 intent

跨资料共享文件

有些开发者在 Android 中使用 URI 标记文件路径。不过,由于存在工作资料时会使用不同的文件系统,因此我们建议您:

使用
内容 URI
  • 内容 URI 包含特定文件的授权、路径和 ID。您可以使用 FileProvider 子类生成此文件。 了解详情
  • 使用 Intent 共享和授予访问内容 URI 的权限。只能使用 intent 跨个人资料边界传递权限。如果您使用 Context.grantUriPermission() 向其他应用授予对您文件的访问权限,则系统只会向同一配置文件中的应用授予相应权限。
请勿使用
文件 URI
  • 包含设备存储空间中文件的绝对路径。
  • 在一个个人资料中有效的文件路径 URI 在另一个个人资料中无效。
  • 如果您将文件 URI 附加到 intent,处理程序将无法访问其他配置文件中的文件。

后续步骤:您的应用支持受管理资料后,请在工作资料中进行测试。请参阅测试应用

实现托管配置

托管配置是一组说明,可供 IT 管理员以特定方式管理用户的移动设备。这些说明是通用的,适用于所有 EMM,允许管理员在用户手机上远程配置应用。

如果您是为企业或政府开发应用,则可能需要满足您所在行业的一组特定要求。使用托管配置,IT 管理员可以远程为其用户的 Android 应用指定设置并强制执行政策;例如:

  • 配置应用可以通过移动网络/3G 网络同步数据,还是只能通过 Wi-Fi 同步数据
  • 在网络浏览器中允许或屏蔽网址
  • 配置应用的电子邮件设置
  • 启用或停用打印功能
  • 管理书签

实现托管配置的最佳做法

设置托管配置指南是有关如何构建和部署托管配置的关键来源。查看本文档后,请参阅下面的建议获取更多指导。

首次启动应用时

启动应用后,您就可以查看 onStart()onResume() 中是否已为此应用设置了托管配置。此外,您还可以了解自己的应用是受管还是非受管应用。例如,如果 getApplicationRestrictions() 返回:

  • 一组特定于应用的限制 - 您可以静默配置托管配置(无需用户输入)。
  • 空软件包 - 您的应用像不受管理一样(例如,应用在个人资料中的行为)。
  • 包含单个键值对的软件包,KEY_RESTRICTIONS_PENDING 设为 true - 您的应用受到管理,但 DPC 配置不正确。您应该从应用中屏蔽此用户,并将他们转到其 IT 管理员。

监听托管配置的更改

IT 管理员可以随时更改托管配置以及他们想要对用户强制执行的政策。因此,我们建议您确保您的应用可以接受针对托管配置的新限制,如下所示:

  • 启动时提取限制 - 您的应用应在 onStart()onResume() 中调用 getApplicationRestrictions(),并与旧限制进行比较,以了解是否需要进行更改。
  • 在运行时监听 - 在检查是否存在新限制后,在正在运行的 Activity 或服务中动态注册 ACTION_APPLICATION_RESTRICTIONS_CHANGED。此 intent 只会发送给动态注册的监听器,而不会发送给应用清单中声明的监听器。
  • 在未运行时取消注册 - 在 onPause() 中,您应该取消注册 ACTION_APPLICATION_RESTRICTIONS_CHANGED 的广播。

专用设备

专用设备是用于单一用途的自助服务终端设备,例如数字标牌显示设备、票券打印自助服务终端或结账收银机。

当 Android 设备被配置为专用设备时,用户会看到应用锁定在屏幕上,且没有“主屏幕”或“最近用过的应用”按钮来退出该应用。专用设备也可以配置为显示一组应用,例如图书馆自助服务终端(其中包含适用于图书馆目录的应用)和网络浏览器。

如需了解相关说明,请参阅专用设备

使用 Chrome 自定义标签页设置单点登录

企业用户的设备上通常有多个应用,他们更希望登录一次即可访问所有工作应用。通常,用户通过 WebView 登录;不过,有几个原因导致这种登录方式不理想:

  1. 用户通常需要使用相同的凭据多次登录。WebView 解决方案通常不是真正的单点登录 (SSO) 体验。
  2. 可能存在安全风险,包括恶意应用检查 Cookie 或注入 JavaScript® 来访问用户凭据。即便是受信任的开发者,如果依赖潜在的恶意第三方 SDK,也会面临风险。

如需解决这两个问题,一种解决方案是使用浏览器自定义标签页(而不是 WebView)对用户进行身份验证。这可确保身份验证:

  • 发生在托管应用无法检查内容的安全环境(系统浏览器)中。
  • 具有共享 Cookie 状态,确保用户只需登录一次。

要求

自 API 级别 15 (Android 4.0.3) 起,支持自定义标签页。若要使用自定义标签页,您需要安装受支持的浏览器,例如 Chrome。 Chrome 45 及更高版本以 Chrome 自定义标签页的形式实现了此功能。

如何使用自定义标签页实现单点登录?

Google 开放了使用自定义标签页的 OAuth 客户端库的源代码,并将其纳入 OpenID 基础的 OpenID Connect 工作组。要使用 AppAuth 库为单点登录设置自定义标签页,请参阅 GitHub 上的文档和示例代码

测试应用

开发应用后,您需要在工作资料和全代管式设备上对其进行测试。请参见以下说明。

使用 Test DPC 测试您的 Android 应用

我们提供 Test DPC 应用,可帮助 Android 开发者在企业环境中测试其应用。使用 Test DPC,您可以在设备上设置 EMM 政策或托管配置值,就像组织使用 EMM 管理设备一样。如需在设备上安装 Test DPC,请选择以下方法之一:

如需详细了解如何配置 Test DPC,请参阅以下说明和 Test DPC 用户指南

配置工作资料

如需在工作资料中测试应用,您需要先使用 Test DPC 应用在设备上配置工作资料,如下所示:

  1. 在设备上安装 Test DPC。
  2. 在 Android 启动器中,点按设置 Test DPC 应用图标。
  3. 按照屏幕上的说明操作。
  4. 在设备上安装您的应用并进行测试,以查看其在工作资料中的运行情况。

Android 会创建工作资料,并在工作资料中安装 Test DPC 的副本。您可以使用此带有工作标记的 Test DPC 实例在工作资料中设置政策和托管配置。如需详细了解如何设置用于开发工作的工作资料,请参阅开发者指南的工作资料

配置全代管式设备

组织使用全代管式设备,因为组织可以在设备上强制执行一系列管理政策。如需配置全代管式设备,请按以下步骤操作:

  1. 在设备上安装 Test DPC。
  2. 确认设备上没有其他用户或工作资料。
  3. 确认设备上没有帐号。
  4. 在终端中运行以下 Android 调试桥 (adb) 命令:
    adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver
  5. 完成设备所有者配置后,您就可以在该设备上测试您的应用了。您应专门测试托管配置intent 在该设备上的工作原理。

您也可以使用其他配置方法,请参阅 Test DPC 用户指南。如需了解 IT 管理员通常如何注册和配置 Android 设备,请参阅配置设备

端到端测试

在上述环境中完成应用测试后,您可能需要在端到端生产环境中测试应用。此过程包括客户在其组织中部署应用时需要执行的步骤,包括:

  • 通过 Play 分发应用
  • 服务器端代管式配置
  • 服务器端配置文件政策控制

您需要访问 EMM 控制台才能完成端到端测试。如需获取测试控制台,最简单的方法是向您的 EMM 请求测试控制台。获得访问权限后,请完成以下任务:

  1. 使用新的 ApplicationId 创建测试版的应用。
  2. 声明受管理的 Google 网域的所有权,并将其绑定到您的 EMM。如果您已经有与 EMM 绑定的测试网域,则可能需要取消绑定该网域,以便使用您首选的 EMM 进行测试。如需了解具体的解除绑定步骤,请咨询您的 EMM。
  3. 将您的应用发布到其代管式 Google 网域的专用渠道
  4. 使用 EMM 控制台和 EMM 应用执行以下操作:
    1. 设置工作设备。
    2. 分发您的应用。
    3. 设置托管配置。
    4. 设置设备政策。

此过程因 EMM 而异。如需了解详情,请参阅 EMM 的文档。恭喜!您已完成上述步骤,并确认您的应用适合企业用户。