开发者指南

Android 的企业功能为组织提供了一个安全、灵活且统一的 Android 移动平台,将设备、应用程序和管理结合在一起。默认情况下,Android 应用与 Android 的企业功能兼容。但是,您可以使用其他功能来使您的应用在托管的 Android 设备上获得最佳效果

  • 工作配置文件兼容性—修改您的 Android 应用,使其在托管设备上获得最佳效果。
  • 托管配置—修改您的应用,以允许 IT 管理员选择为您的应用指定自定义设置。
  • 专用设备—优化您的应用,以便可以将其作为信息亭部署在 Android 设备上。
  • 单点登录 (SSO)—简化用户在其托管的 Android 设备上登录不同应用的过程。

先决条件

  1. 您已创建 Android 应用。
  2. 您已准备好修改您的应用,使其最适合组织使用。
  3. 最低版本:Android 5.0 Lollipop 建议版本:Android 6.0 Marshmallow 及更高版本。

注意:Android 的企业功能内置于大多数 Android 5.0 设备中;但是,Android 6.0 及更高版本提供了其他功能,尤其是在专用设备方面。

工作配置文件

您可以通过工作配置文件管理用户的业务数据和应用程序。工作配置文件是与 Android 设备上的主用户帐户关联的托管公司配置文件。工作配置文件安全地将工作应用和数据与个人应用和数据隔离。此工作配置文件位于与用户控制的个人配置文件分开的容器中。这些单独的配置文件允许组织管理他们关心的业务数据,但将用户设备上的所有其他内容保留在用户的控制之下。有关最佳实践的深入探讨,请参阅工作配置文件指南。有关这些最佳实践的概述,请参见下文。

工作配置文件的关键功能

  • 单独且安全的配置文件
  • 用于应用程序分发的托管 Google Play
  • 单独的带徽章的工作应用程序
  • 管理员控制的仅配置文件管理功能

Android 5.0+ 上的工作配置文件优势

  • 完整设备加密
  • 当设备上存在个人配置文件和工作配置文件时,两个配置文件共享一个 Android 应用程序包 (APK)
  • 设备策略控制器(DPC)仅限于工作配置文件。
  • 通过DevicePolicyManager 类进行设备管理。

工作配置文件的注意事项

  • Android 系统会阻止意图跨越配置文件,并且 IT 管理员可以启用或禁用系统应用
  • 在一个配置文件中有效的文件路径(统一资源标识符 [URI])在另一个配置文件中可能无效。

防止意图在配置文件之间失败

很难知道哪些意图可以在配置文件之间传递,哪些意图会被阻止。唯一确定方法是进行测试。在您的应用启动活动之前,您应该通过调用Intent.resolveActivity() 来验证请求是否已解析。

  • 如果返回null,则请求未解析。
  • 如果返回某些内容,则表示意图已解析,可以安全地发送意图。

注意:有关详细的测试说明,请参阅防止意图失败

跨配置文件共享文件

一些开发者使用 URI 在 Android 中标记文件路径。但是,由于存在工作配置文件时存在单独的文件系统,因此我们建议

使用
内容 URI
  • 内容URI 包含特定文件的权限、路径和 ID。您可以使用FileProvider 子类生成它。了解更多
  • 使用意图共享和授予访问内容 URI 的权限。权限只能通过意图跨配置文件边界传递。如果您使用Context.grantUriPermission() 授予另一个应用访问您文件的权限,则仅授予该配置文件中该应用的权限。
不要使用
文件 URI
  • 包含设备存储上文件的绝对路径。
  • 在一个配置文件中有效的文件路径 URI 在另一个配置文件中无效。
  • 如果您将文件 URI 附加到意图,则处理程序无法访问另一个配置文件中的文件。

下一步:您的应用支持托管配置文件后,请在工作配置文件中对其进行测试。请参阅测试您的应用

实施托管配置

托管配置是一组 IT 管理员可以使用来以特定方式管理其用户移动设备的指令。这些指令是通用的,适用于任何 EMM,允许管理员远程配置其用户手机上的应用程序。

如果您正在为企业或政府开发应用,您可能需要满足您行业的特定要求集。使用托管配置,IT 管理员可以远程指定设置并为其用户的 Android 应用实施策略;例如

  • 配置应用是否可以通过蜂窝/3G 或仅通过 Wi-Fi 同步数据
  • 允许或阻止 Web 浏览器上的 URL
  • 配置应用的电子邮件设置
  • 启用或禁用打印
  • 管理书签

实施托管配置的最佳实践

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

首次启动应用时

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

  • 一组特定于应用的限制—您可以静默配置托管配置(无需用户输入)。
  • 一个空捆绑包—您的应用的行为就像非托管一样(例如,应用在个人配置文件中的行为方式)。
  • 一个包含单个键值对的捆绑包,其中KEY_RESTRICTIONS_PENDING 设置为 true—您的应用正在被管理,但 DPC 未正确配置。您应该阻止此用户使用您的应用,并将其引导至其 IT 管理员。

侦听托管配置的更改

IT 管理员可以随时更改托管配置以及他们希望对用户实施的策略。因此,我们建议您确保您的应用可以接受托管配置的新限制,如下所示

  • 在启动时获取限制—您的应用应在onStart()onResume() 中调用getApplicationRestrictions(),并与旧限制进行比较以查看是否需要更改。
  • 在运行时侦听—在检查新限制后,在运行的活动或服务中动态注册ACTION_APPLICATION_RESTRICTIONS_CHANGED。此意图仅发送到动态注册的侦听器,而不发送到应用清单中声明的侦听器。
  • 在未运行时取消注册—在onPause() 中,您应该取消注册ACTION_APPLICATION_RESTRICTIONS_CHANGED 的广播。

专用设备

专用设备是用于单一目的的亭户设备,例如数字标牌显示器、售票亭户或收银机。

当 Android 设备配置为专用设备时,用户会看到一个锁定在屏幕上的应用程序,没有“主页”或“最近使用的应用”按钮来退出该应用程序。专用设备还可以配置为显示一组应用程序,例如一个带有图书馆目录应用和 Web 浏览器的图书馆亭户。

有关说明,请参阅专用设备

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

企业用户通常在其设备上有多个应用,他们更喜欢登录一次以访问其所有工作应用。通常,用户通过WebView 登录;但是,以下几个原因使其并不理想

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

解决这两个问题的方案是使用浏览器自定义标签而不是 WebView 对用户进行身份验证。这可确保身份验证

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

要求

自定义标签支持回溯到 API 级别 15(Android 4.0.3)。要使用自定义标签,您需要一个受支持的浏览器,例如 Chrome。Chrome 45 及更高版本将此功能实现为Chrome 自定义标签

如何使用自定义标签实施 SSO?

Google 已开源了一个使用自定义标签的 OAuth 客户端库,并将其贡献给 OpenID 基金会的 OpenID Connect 工作组。要使用 AppAuth 库为 SSO 设置自定义标签,请参阅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. 完成设备所有者预配后,您可以在该设备上测试您的应用。您应特别测试托管配置意图 在该设备上的工作方式。

您还可以使用其他预配方法——请参阅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 的文档以获取更多详细信息。恭喜!您已完成这些步骤并验证了您的应用对企业用户的适用性。