让你的应用兼容 Android for Work

  • Abel Avram
  • 梅雪松

2015 年 3 月 1 日

话题:AndroidDevOps语言 & 开发

Google 发布了Android for Work,该程序让用户在企业环境中使用自己的 Android 设备成为可能。

对于 Android Lollipop,企业管理员可以创建 Managed Profile(又称为 Work Profile),然后部署到员工的智能手机上并进行远程管理。Managed Profile 可以与用户的个人 Profile 共存,用户无需在两者之间进行切换。IT 部门可以决定哪些应用将被推送到这些受管理的设备、这些设备的相应设置以及可用的功能。例如,Managed Profile 可以禁止使用摄像头。此外,IT 管理员能够随时删除应用和整个 Profile。

Managed Profile 只能安装在加密设备上。配置和数据都进行了加密并分开存放。用户对自己的个人数据拥有完全的控制并保证私密性,而管理员则控制着企业数据。工作应用及其通知使用 Badge 可视化标识。管理员可以从 Play Store 安装任何应用,但在将它们推送到设备之前,建议先进行测试。

对于运行 Android Ice Cream Sandwich、Jelly Bean 或 KitKat 的设备,企业可以使用 Android for Work 独立应用,经由 IT 部门批准和管理后,它包含的数个应用可以提供安全的服务:邮件、日历、联系人和浏览器等等。

对于免费应用,企业可以将其部署到 Managed Profile 中。而付费应用,开发者需要在发布过程中选择是否将应用批量销售给企业。

如果开发者按照最佳实践开发自己的 Android 应用,那么这些应用将能够与 Android for Work 一起工作,不会有什么问题。反之,则可能面临一些问题。这些问题与管理员针对 Managed Profile 的限制和强制执行的设置有关。

开发者应该明白,除非管理员明确允许,Android Intention 是无法跨 Profile 的。而 Managed Profile 包含的应用数量有限,因此,可能会没有合适的应用来处理 Managed Profile 中的 Intent,这会导致功能缺失,甚至在处理不当时应用闪退。为了避免这种情况,开发者必须调用Intent.resolveActivity()来检查自己的 Intent 是否有对应的处理对象。如果失败,则尽可能清晰地通知用户。此外,开发者也不要假设所有设备功能都是有效的,因为管理员可以在 Managed Profile 中禁用某些功能。

另一个问题源于 Profile 拥有独立的存储区域。这意味着文件 URI 无法跨 Profile 传递。如果 Managed Profile 的应用触发 Intent 并传递一个文件 URI,而这个文件 URI 是由用户个人 Profile 中的应用处理时,将会导致失败。文件 URI 应该使用FileProvider.getUriForFile()包装成 Content URI 再传递。

为了确保应用能够在 Managed Profile 中正常工作,建议使用 Google 提供的BasicManagedProfile(下载 ZIP) 进行测试。要了解创建企业应用更详细的信息,请访问Building Apps for Work

查看英文原文:How to Make Sure an App Works with Android for Work

AndroidDevOps语言 & 开发