Android设备管理API概述
如果 Android 设备的某个硬件出现故障,Android 设备会提示用户相关信息;如果丢了与自己的 Google 账户相关联的 Android 设备,也可以帮你找到、锁定并清空该设备。这些功能都是依靠 Android 设备管理实现的。
其实,Android 从 2.2 版本开始就提供了一套设备管理 API 来进行 Android 设备的管理工作,其中包含设备锁屏、禁用启用摄像头(4.0 开始提供)、擦除用户数据等一系列设备管理策略。这些 API 在安全设置中都是非常有用的。
例如,Android 内置的电子邮件充分利用了新的 API,以提高 Exchange 的支持,通过电子邮件应用程序,管理员借助 Exchange 可以强制执行跨设备密码策略,包括字母数字密码或数字的 PIN。管理员还可以远程擦除(恢复出厂设置)丢失或被盗的手机。Exchange 用户可以同步自己的电子邮件、日历数据等。
使用设备管理常见的应用有电子邮件客户端、远程数据擦除、设备管理服务等。
本章主要介绍 Android 设备管理的工作过程、管理策略及开发设备管理应用的过程。
设备管理的工作过程分为以下4个步骤:
1)系统管理员写入一个设备管理应用,执行远程/本地设备安全策略。这些策略以硬编码的形式进入应用,或者可以从第三方服务器上动态获取。
2)在用户的设备上安装应用程序。安卓目前还没有一个自动配置的解决方案,但可以采用如下方式将应用程序分发到用户设备。
3)系统将提示用户使用设备管理应用程序。这种情况取决于应用程序是如何实现的。
4)一旦用户允许设备来管理应用程序,他们就要遵守其规定,除了被约束外,遵守规定也是有好处的,如可以访问敏感系统和数据。
即使用户没有开启设备管理应用,但在设备上它仍然存在,只不过处于非活动状态。当然,用户不会被它管理,也不会被任何应用程序管理。例如,用户可能无法同步数据。
如果一个用户不遵守规定(比如用户设置的密码违反规则),它将由应用程序处理。然而,通常会导致用户无法同步数据。
如果一个设备试图连接到服务器,但请求设备管理 API 不支持其规定,则不允许连接。设备管理 API 当前不允许部分配置,换句话说,如果一个设备(如一个遗留的设备)不支持所有规定,那么没办法连接设备。
如果一个设备包含多种功能的管理应用,它们会按照严格的策略进行管理,而不存在特殊情况。如果要卸载一个设备管理应用程序,用户可以管理员身份先注销该应用程序。
依据表 1 的策略,设备管理 API 可以实现诸多功能,例如:
为了更好地理解和实现设备管理,下面教程我们通过一个案例进行介绍。
其实,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 目前只支持密码锁屏。策略 | 说明 |
---|---|
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引入特性) |
- 提示用户设置新密码。
- 立刻锁住设备。
- 擦拭设备数据(恢复设备到其出厂默认设置)。
为了更好地理解和实现设备管理,下面教程我们通过一个案例进行介绍。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算