如何从Android Device Policy获取设备标识符实现用户名与设备映射?
设备标识符获取与用户-AE设备映射方案
首先明确:无法直接调用Android Device Policy的公开接口获取IMEI/序列号这类硬件标识符,谷歌对敏感硬件标识符做了权限限制,非系统级应用无法访问。你可以采用以下方案完成映射:
- 方案1:预配会话ID绑定
你在下发setupActions启动自定义登录应用时,可以在Intent中附加一个由你的EMM服务端生成的唯一预配会话ID,这个ID提前和你AE侧待激活的设备记录做一一对应。用户在登录应用内完成身份校验后,将当前登录的用户名和这个会话ID一并回传给你的服务端,直接就能完成用户名和AE侧deviceId的绑定,不需要获取硬件标识符。 - 方案2:AndroidId匹配
你的自定义登录应用可以直接获取系统的ANDROID_ID(无需特殊权限),这个值在Fully managed设备的整个生命周期内保持固定。你可以通过Android Management API的devices列表接口查询到所有设备对应的androidId字段,将用户上传的ANDROID_ID和AE侧记录做匹配即可完成绑定。 - 设备名称同步方案
绑定完成后你可以直接调用Android Management API的devices.patch接口,将你侧的设备命名规则同步更新到AE侧的设备名称字段,即可解决两边设备名称不一致的问题。
针对你提到的预配阶段无法传递托管配置的问题,补充说明:预配阶段的托管配置仅支持下发静态值,你可以在完成用户-设备绑定后,通过enterprises.applications.patch接口动态更新对应设备的托管配置,将用户相关的配置参数推送到设备即可。
与Android Device Policy交互、查询已应用策略的方法
你不需要直接和本地的Android Device Policy应用做交互,可通过以下两种方式查询策略:
- 服务端查询全量策略:直接调用Android Management API的
devices.get接口,返回结果的policyName字段会关联当前设备应用的策略ID,再调用policies.get接口即可获取该策略的完整配置内容。 - 设备本地查询当前生效的限制:直接调用系统
DevicePolicyManager类的公开接口即可查询当前生效的策略限制,比如摄像头禁用状态、密码复杂度要求等,无需和Android Device Policy直接通信。
内容的提问来源于stack exchange,提问作者Sarang
相关产品推荐
相关产品推荐

