Android Management API中disabledReason的使用及显示方法
disabledReason 属性展示位置
- 全管控模式的企业自有设备:设备被设置为
DISABLED状态后会进入完全锁定模式,用户无法进入系统桌面、使用任何常规功能,此时屏幕会展示全屏设备禁用提示页,自定义禁用原因会直接展示在该页面的提示正文区域 - BYOD工作配置文件模式设备:禁用后工作资料会被锁定,自定义禁用原因会展示在用户尝试访问工作应用、工作资料的拦截提示页上
该提示不会出现在通知栏、普通弹窗或其他非禁用场景的系统页面中。
配置不生效的核心原因
你当前的代码缺少Patch请求必填的updateMask参数:调用AMAPI的devices.patch接口时,如果没有显式声明本次请求要更新的字段路径,服务端会忽略你传入的state、disabledReason等属性变更,这是绝大多数开发者调用该接口时遇到属性不生效的共性问题。
另外还有两个常见的触发失败场景:
- 设备上安装的管控应用Android Device Policy版本过低,版本号低于v83.20的版本不支持加载自定义禁用原因,只会展示默认的“设备已被管理员禁用”通用提示
- 设备处于离线状态时,配置无法即时同步到设备端,需要等设备联网后完成策略同步才会展示自定义提示
正确配置代码示例
你可以参考如下Java客户端代码调整实现,核心是给Patch请求传入指定更新字段的UpdateMask:
device.setState("DISABLED"); UserFacingMessage reason = new UserFacingMessage(); reason.setDefaultMessage("你的设备因未按要求安装合规管控插件已被禁用,请联系企业IT支持人员处理"); device.setDisabledReason(reason); // 声明本次请求要更新的字段列表 List<String> updatePaths = Arrays.asList("state", "disabledReason"); UpdateMask updateMask = new UpdateMask().setPaths(updatePaths); androidManagementClient .enterprises() .devices() .patch(device.getName(), device) .setUpdateMask(updateMask) .execute();
生效验证注意事项
- 如果你是在设备已经处于
DISABLED状态后单独更新disabledReason,配置不会即时刷新,需要等待3-5分钟待设备完成策略同步,或主动触发设备强制同步,之后锁屏再点亮屏幕即可看到更新后的提示 - 若需要适配多语言场景,可以给
UserFacingMessage设置对应语言区域的本地化消息,未匹配到对应语言时会 fallback 到你设置的defaultMessage内容 - 该提示仅在设备/工作资料禁用状态下展示,和普通锁屏页的管理员自定义消息属于不同的配置项,不要混淆两者的使用场景
内容的提问来源于stack exchange,提问作者edu_correia
相关产品推荐
相关产品推荐

