普通 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 生命周期。安全边界不对。

第五个坑:测试设备没有正确部署企业策略。根本调不通。

运行效果图

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

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐