MDM Kit:EnterpriseAdminExtensionAbility 的企业设备管控模型【鸿蒙心迹】
普通 App 为什么不能直接禁用 USB,企业管理 App 却可以?

做企业设备管理功能的时候,最开始的思路很简单:Manifest 里声明了权限,不就能调用 MDM 接口了吗?
结果调用的时候直接报错。才意识到:光声明权限根本没用。企业管控能力不是你写个权限就能用的,是一整套授权和激活机制。
一、声明权限不等于拥有能力
很多人以为:Manifest 里写了权限,就能调用对应接口。不对。
| 条件 | 说明 |
|---|---|
| 声明权限 | 只是告诉系统你可能需要这个能力 |
| Admin 激活 | 企业授权,设备管理员激活 |
| 角色校验 | SDA/DA/BDA 不同角色不同权限 |
三重校验都过了,你才能调用对应的管控接口。少一个都不行。
二、EnterpriseAdmin 为什么是独立进程
MDM 的 Admin 组件是一个独立的进程,叫 EnterpriseAdminExtensionAbility。
这段代码解决什么问题: 企业 Admin 能力实现。
文件: mdm/EnterpriseAdminAbility.ets
用途: 企业设备管控入口
接入位置: 扩展 Ability
import { adminManager } from '@kit.MDMKit';
export default class AdminAbility extends adminManager.EnterpriseAdminExtensionAbility {
// 企业管控能力入口
}
为什么要独立进程?因为企业管控是高权限能力,不能放在普通业务进程里。独立进程,单独授权,单独校验,安全边界更清晰。
三、SDA/DA/BDA 角色有什么区别
企业设备管理有不同的角色,不同角色权限不一样。
| 角色 | 权限范围 |
|---|---|
| SDA | 主设备管理员,最高权限 |
| DA | 部门管理员,部分权限 |
| BDA | 业务管理员,特定业务权限 |
很多人把角色搞混了:以为只要激活了,什么接口都能调。不对。你的角色是什么,就能调什么接口。角色不对,调用就报错。

四、为什么测试设备要部署企业策略
还有个坑:测试设备没有部署企业策略。
你在开发机上测试,设备根本不是企业管理设备,当然调用不了 MDM 接口。正确的做法是:测试设备要先部署企业策略,激活 Admin,才能测试。
五、几个容易踩的坑
第一个坑:声明权限后就认为可以调用 MDM API。光声明没用,还要激活。
第二个坑:Admin 未激活直接调用管控接口。直接报错。
第三个坑:SDA/DA/BDA 角色混用。角色不对,调用被拒。
第四个坑:普通业务进程承担 Admin 生命周期。安全边界不对。
第五个坑:测试设备没有正确部署企业策略。根本调不通。

这次做企业管控最大的体会是:企业设备管控不是"写个权限就能用",是一整套授权、激活、角色校验的安全体系。三重校验都过了,你才有对应的能力。少一个环节都不行。
更多推荐




所有评论(0)