Android设备管理API概述

如果 Android 设备的某个硬件出现故障,Android 设备会提示用户相关信息;如果丢了与自己的 Google 账户相关联的 Android 设备,也可以帮你找到、锁定并清空该设备。这些功能都是依靠 Android 设备管理实现的。

其实,Android 从 2.2 版本开始就提供了一套设备管理 API 来进行 Android 设备的管理工作,其中包含设备锁屏、禁用启用摄像头(4.0 开始提供)、擦除用户数据等一系列设备管理策略。这些 API 在安全设置中都是非常有用的。

例如,Android 内置的电子邮件充分利用了新的 API,以提高 Exchange 的支持,通过电子邮件应用程序,管理员借助 Exchange 可以强制执行跨设备密码策略,包括字母数字密码或数字的 PIN。管理员还可以远程擦除(恢复出厂设置)丢失或被盗的手机。Exchange 用户可以同步自己的电子邮件、日历数据等。

使用设备管理常见的应用有电子邮件客户端、远程数据擦除、设备管理服务等。

本章主要介绍 Android 设备管理的工作过程、管理策略及开发设备管理应用的过程。

设备管理工作过程

可以使用设备管理 API 来编写设备管理应用、用户对设备的安装以及设备管理应用执行所需的策略。

设备管理的工作过程分为以下4个步骤:

1)系统管理员写入一个设备管理应用,执行远程/本地设备安全策略。这些策略以硬编码的形式进入应用,或者可以从第三方服务器上动态获取。

2)在用户的设备上安装应用程序。安卓目前还没有一个自动配置的解决方案,但可以采用如下方式将应用程序分发到用户设备。
  • 谷歌商店。
  • 从其他存储上启用安装。
  • 通过其他手段分配应用,比如电子邮件或者网站。

3)系统将提示用户使用设备管理应用程序。这种情况取决于应用程序是如何实现的。

4)一旦用户允许设备来管理应用程序,他们就要遵守其规定,除了被约束外,遵守规定也是有好处的,如可以访问敏感系统和数据。

即使用户没有开启设备管理应用,但在设备上它仍然存在,只不过处于非活动状态。当然,用户不会被它管理,也不会被任何应用程序管理。例如,用户可能无法同步数据。

如果一个用户不遵守规定(比如用户设置的密码违反规则),它将由应用程序处理。然而,通常会导致用户无法同步数据。

如果一个设备试图连接到服务器,但请求设备管理 API 不支持其规定,则不允许连接。设备管理 API 当前不允许部分配置,换句话说,如果一个设备(如一个遗留的设备)不支持所有规定,那么没办法连接设备。

如果一个设备包含多种功能的管理应用,它们会按照严格的策略进行管理,而不存在特殊情况。如果要卸载一个设备管理应用程序,用户可以管理员身份先注销该应用程序。

设备管理策略

在企业级应用的设置中,设备管理 API 依据一套必须严格遵守的规范来管理设备。设备管理 API 支持的规范如表 1 所示,需要注意的是,设备管理 API 目前只支持密码锁屏。

表 1 设备管理 API 支持的策略
策略 说明
Password enabled
启用密码
设备询问 pin 或者密码的请求
Minimum password length
最小密码长度
设置密码字符需要的数目。比如,可以请求最少 6 位字符的 pin 或者密码
Alphanumeric password required
字符数字密码请求
由数字和字母组成的密码请求。可能包含符号字符。
Complex password required
复杂密码请求
要求密码必须包含至少一个字母,一个数字符号和一个特殊字符。(android 3.0引入的特性)
Minimum letters required in password
密码最小字母请求
所有管理权限或者特殊部分密码请求的最小字母数(android 3.0引入的特性)
Minimum lowercase letters required in password
密码中的最小小写字母请求
所有管理权限或者特殊部分密码请求的最小小字母数(android 3.0引入的特性)
Minimum non-letter characters required in password
密码中的最小非字母型字符请求
所有管理权限或特殊部分密码中,请求的非字母型字符的最小数(android 3.0引入的特性)
Minimum numerical digits required in password
密码中最小数字请求
所有管理权限或特殊部分密码中,请求的数字字符的最小数。(android 3.0引入的特性)
Minimum symbols required in password
密码要求的最小符号
所有管理权限或特殊部分密码中,请求的符号的最小数。(android 3.0引入特性)
Minimum uppercase letters required in password
密码的最小大写字母需求。
所有管理权限和特殊部分的密码中,请求的大写字母的最小数(android 3.0引入特性)
Password expiration timeout
密码过期时间超时问题
当设备管理设置过期超时时,一个即将过期的密码表现为毫秒中的变量增量(android 3.0引入特性)
Password history restriction
密码历史限制
阻止用户重复使用之前的n个密码。常与setPasswordExpirationTimeout()方法同时使用。(android 3.0引入特性)
Maximum failed password attempts
最大密码尝试失败
在设备擦拭数据之前指定用户输入错误的密码次数。设备管理 API 也允许管理员远程充值设备(默认出厂设置),可以在设备丢失或者被盗之后保证数据安全。
Maximum inactivity time lock
最大限制时间锁定
设置自动锁屏的时间。一段时间没发生交互,则自动锁屏。时间可设置为 1 到 60 分钟之间。
Require storage encryption
存储加密需求
要求存储加密,如果设置支持的话。(android 3.0引入特性)
Disable camera
禁用相机
指定应该禁用的相机(并非永久性的禁用),相机可以基于语境、时间等来动态开启/禁用(android 4.0引入特性)
依据表 1 的策略,设备管理 API 可以实现诸多功能,例如:
  • 提示用户设置新密码。
  • 立刻锁住设备。
  • 擦拭设备数据(恢复设备到其出厂默认设置)。

为了更好地理解和实现设备管理,下面教程我们通过一个案例进行介绍。