普通 App 为什么不能直接禁用 USB企业管理 App 却可以做企业设备管理功能的时候最开始的思路很简单Manifest 里声明了权限不就能调用 MDM 接口了吗结果调用的时候直接报错。才意识到光声明权限根本没用。企业管控能力不是你写个权限就能用的是一整套授权和激活机制。一、声明权限不等于拥有能力很多人以为Manifest 里写了权限就能调用对应接口。不对。条件说明声明权限只是告诉系统你可能需要这个能力Admin 激活企业授权设备管理员激活角色校验SDA/DA/BDA 不同角色不同权限三重校验都过了你才能调用对应的管控接口。少一个都不行。二、EnterpriseAdmin 为什么是独立进程MDM 的 Admin 组件是一个独立的进程叫 EnterpriseAdminExtensionAbility。这段代码解决什么问题企业 Admin 能力实现。文件mdm/EnterpriseAdminAbility.ets用途企业设备管控入口接入位置扩展 Abilityimport{adminManager}fromkit.MDMKit;exportdefaultclassAdminAbilityextendsadminManager.EnterpriseAdminExtensionAbility{// 企业管控能力入口}为什么要独立进程因为企业管控是高权限能力不能放在普通业务进程里。独立进程单独授权单独校验安全边界更清晰。三、SDA/DA/BDA 角色有什么区别企业设备管理有不同的角色不同角色权限不一样。角色权限范围SDA主设备管理员最高权限DA部门管理员部分权限BDA业务管理员特定业务权限很多人把角色搞混了以为只要激活了什么接口都能调。不对。你的角色是什么就能调什么接口。角色不对调用就报错。四、为什么测试设备要部署企业策略还有个坑测试设备没有部署企业策略。你在开发机上测试设备根本不是企业管理设备当然调用不了 MDM 接口。正确的做法是测试设备要先部署企业策略激活 Admin才能测试。五、几个容易踩的坑第一个坑声明权限后就认为可以调用 MDM API。光声明没用还要激活。第二个坑Admin 未激活直接调用管控接口。直接报错。第三个坑SDA/DA/BDA 角色混用。角色不对调用被拒。第四个坑普通业务进程承担 Admin 生命周期。安全边界不对。第五个坑测试设备没有正确部署企业策略。根本调不通。这次做企业管控最大的体会是企业设备管控不是写个权限就能用是一整套授权、激活、角色校验的安全体系。三重校验都过了你才有对应的能力。少一个环节都不行。
