1# EnterpriseAdminExtensionAbility的创建与使用(仅对系统应用开放) 2 3### 介绍 4 5企业设备管理扩展能力,是MDM应用必备组件。当开发者为企业开发MDM(Mobile Device Management)应用时,需继承EnterpriseAdminExtensionAbility,在EnterpriseAdminExtensionAbility实例中实现MDM业务逻辑,EnterpriseAdminExtensionAbility实现了系统管理状态变化通知功能,并定义了管理应用激活、去激活、应用安装、卸载事件等回调接口。 6 7### 效果预览 8 9| 未激活 | 订阅应用安装事件失败 | 已激活 | 订阅应用安装卸载事件成功 | 10| ------------------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------- | 11| <img src="screenshots/device/first.jpg" width="300" /> | <img src="screenshots/device/second.jpg" width="300" /> | <img src="screenshots/device/third.jpg" width="300" /> | <img src="screenshots/device/fourth.jpg" width="300" /> | 12 13使用说明 14 151.启动应用后,点击激活设备管理器,会显示激活成功。由企业管理员或者员工部署MDM应用,激活设备管理器,系统通知MDM应用已激活DeviceAdmin权限。MDM应用可在onAdminEnable回调函数中进行初始化策略设置。 16 172.点击去激活设备管理器,会显示去激活成功。系统或者员工去激活设备管理器,应用可以通知企业管理员设备已脱管。 18 193.点击订阅应用安装卸载事件,会显示订阅成功。企业应用管理场景下,企业管理员订阅应用安装卸载事件,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。 20 214.点击取消订阅应用安装卸载事件,会显示取消订阅成功。企业应用管理场景下,企业管理员取消订阅应用安装卸载事件。 22 23### 工程目录 24``` 25entry/src/main/ets/ 26|---common 27| |---Logger.ts // 日志工具 28|---enterpriseextability 29| |---EnterpriseAdminAbility.ts // 数据类型 30|---entryAbility 31| |---EntryAbility.ts 32|---pages 33| |---Index.ets // 首页 34``` 35### 具体实现 36 37* 该示例通过EnterpriseAdminExtensionAbility接口实现了系统管理状态变化通知功能,adminManager接口中enableAdmin方法去激活当前用户下的指定设备管理员应用,disableSuperAdmin方法去根据bundleName将管理员用户下的超级管理员应用去激活,subscribeManagedEvent方法去指定设备管理员应用订阅系统管理事件,unsubscribeManagedEvent方法去指定设备管理员应用取消订阅系统管理事件来实现应用激活、去激活、应用安装、卸载事件。 38* 源码链接:[EnterpriseAdminAbility.ts](entry/src/main/ets/enterpriseextability/EnterpriseAdminAbility.ts),[Index.ets](entry/src/main/ets/pages/Index.ets) 39* 接口参考:[@ohos.enterprise.EnterpriseAdminExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-mdm-kit/js-apis-EnterpriseAdminExtensionAbility.md),[@ohos.enterprise.adminManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-mdm-kit/js-apis-enterprise-adminManager.md),[@ohos.app.ability.Want](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-want.md) 40 41### 相关权限 42 431.允许应用激活设备管理员应用权限:[ohos.permission.MANAGE_ENTERPRISE_DEVICE_ADMIN](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionmanage_enterprise_device_admin) 44 452.允许设备管理员应用订阅管理事件权限:[ohos.permission.ENTERPRISE_SUBSCRIBE_MANAGED_EVENT](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md#ohospermissionenterprise_subscribe_managed_event) 46 47### 依赖 48 49不涉及。 50 51### 约束与限制 52 531. 本示例仅支持标准系统上运行,支持设备:RK3568。 542. 本示例已适配API version 9版本SDK,版本号:3.2.11.9,本示例涉及使用系统接口:@ohos.enterprise.adminManager中的enableAdmin、disableAdmin接口,需要手动替换FullSDK才能编译通过,具体操作可参考[替换指南](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/quick-start/full-sdk-switch-guide.md/)。 553. 本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400 构建 2023年4月7日)及以上版本才可编译运行。 564. 本示例涉及系统接口,需要配置系统应用签名,可以参考[特殊权限配置方法](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/security/hapsigntool-overview.md/),把配置文件中的“app-feature”字段信息改为“hos_system_app”。 575. 本示例涉及ohos.permission.MANAGE_ENTERPRISE_DEVICE_ADMIN为system_core级别(相关权限级别可通过[权限定义列表](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md)查看),需要配置高权限签名,可参考[特殊权限配置方法](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/security/hapsigntool-overview.md/)。 586. 本示例涉及企业应用权限,需要进行特殊签名安装,把签名证书中的"app-distribution-type"字段信息修改为"enterprise_mdm"类型,执行签名脚本生成安装包之后,先执行 1. hdc shell param set const.product.developmentmode 1 2. hdc shell param set const.bms.allowenterprisebundle true 这两个命令再进行包安装。 59 60### 下载 61 62如需单独下载本工程,执行如下命令: 63``` 64git init 65git config core.sparsecheckout true 66echo code/SystemFeature/ApplicationModels/EnterpriseAdminExtensionAbility/ > .git/info/sparse-checkout 67git remote add origin https://gitee.com/openharmony/applications_app_samples.git 68git pull origin master 69``` 70