1# EnterpriseAdminExtensionAbility 2 3## EnterpriseAdminExtensionAbility简介 4 5企业设备管理扩展能力,是MDM(Mobile Device Management)应用必备组件。当开发者为企业开发MDM应用时,需继承EnterpriseAdminExtensionAbility,在EnterpriseAdminExtensionAbility实例中实现MDM业务逻辑,EnterpriseAdminExtensionAbility实现了系统管理状态变化通知功能,并定义了管理应用激活、去激活、应用安装、卸载事件等回调接口。 6 7## 约束与限制 8 9 仅支持设备管理员应用使用。(功能限制) 10 11 12## 场景:监听设备管理器激活、去激活、应用安装、卸载事件 13 14### 概述 15 16onAdminEnabled:由企业管理员或者员工部署MDM应用,激活设备管理器,系统通知MDM应用已激活DeviceAdmin权限。MDM应用可在onAdminEnabled回调函数中进行初始化策略设置。 17 18onAdminDisabled:由系统或者员工去激活设备管理器,通知去激活DeviceAdmin权限,应用可以通知企业管理员设备已脱管。 19 20onBundleAdded: 企业应用管理场景下,企业管理员订阅应用安装事件,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。 21 22onBundleRemoved: 企业应用管理场景下,企业管理员订阅应用卸载事件,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。 23 24### 接口说明 25 26| 类名 | 接口名称 | 描述 | 27| :------------------------------ | ----------------------------------------- | ---------------------------- | 28| EnterpriseAdminExtensionAbility | onAdminEnabled(): void | 设备管理器应用激活回调方法 | 29| EnterpriseAdminExtensionAbility | onAdminDisabled(): void | 设备管理器应用去激活回调方法 | 30| EnterpriseAdminExtensionAbility | onBundleAdded(bundleName: string): void | 应用安装回调方法 | 31| EnterpriseAdminExtensionAbility | onBundleRemoved(bundleName: string): void | 应用卸载回调方法 | 32 33### 开发步骤 34 351. 在工程Module对应的ets目录下,右键选择“New > Directory”,新建一个目录并命名为EnterpriseExtAbility。 362. 在EnterpriseExtAbility目录,右键选择“New > ArkTS File”,新建一个文件并命名为EnterpriseExtAbility.ets。 373. 打开EnterpriseExtAbility.ets文件,导入EnterpriseAdminExtensionAbility模块,自定义类继承EnterpriseAdminExtensionAbility并加上需要的应用通知回调方法,如onAdminEnabled()、onAdminDisabled()等回调方法。当设备管理员应用被激活或者去激活时,则可以在对应回调方法中接受系统发送通知。 38 39```ts 40import EnterpriseAdminExtensionAbility from '@ohos.enterprise.EnterpriseAdminExtensionAbility'; 41 42export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility { 43 onAdminEnabled() { 44 console.info("onAdminEnabled"); 45 } 46 47 onAdminDisabled() { 48 console.info("onAdminDisabled"); 49 } 50 51 onBundleAdded(bundleName: string) { 52 console.info("EnterpriseAdminAbility onBundleAdded bundleName:" + bundleName); 53 } 54 55 onBundleRemoved(bundleName: string) { 56 console.info("EnterpriseAdminAbility onBundleRemoved bundleName" + bundleName); 57 } 58}; 59``` 60 61 4.在工程Module对应的[module.json5](../quick-start/module-configuration-file.md)配置文件中注册ServiceExtensionAbility,type标签需要设置为“enterpriseAdmin”,srcEntry标签表示当前ExtensionAbility组件所对应的代码路径。 62 63```json 64"extensionAbilities": [ 65 { 66 "name": "ohos.samples.enterprise_admin_ext_ability", 67 "type": "enterpriseAdmin", 68 "exported": true, 69 "srcEntry": "./ets/enterpriseextability/EnterpriseAdminAbility.ets" 70 } 71 ] 72``` 73 74## 使用示例 75 76通过@ohos.enterprise.adminManager模块中的subscribeManagedEvent接口进行企业设备管理事件的订阅,订阅应用安装、卸载事件。当订阅成功后,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。并可以通过unsubscribeManagedEvent接口进行企业设备管理事件的去订阅。 77 78```ts 79import adminManager from '@ohos.enterprise.adminManager'; 80import Want from '@ohos.app.ability.Want'; 81import { BusinessError } from '@ohos.base'; 82 83async function subscribeManagedEventCallback() { 84 let admin: Want = { 85 bundleName: 'com.example.myapplication', 86 abilityName: 'EntryAbility', 87 } 88 adminManager.subscribeManagedEvent(admin, 89 [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED, 90 adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED], (error) => { 91 if (error) { 92 console.error(`Failed to subscribe managed event. Code: ${error.code}, message: ${error.message}`); 93 } else { 94 console.log('Succeeded in subscribing managed event'); 95 } 96 }) 97} 98 99async function unsubscribeManagedEventPromise() { 100 let admin: Want = { 101 bundleName: 'com.example.myapplication', 102 abilityName: 'EntryAbility', 103 } 104 await adminManager.unsubscribeManagedEvent(admin, 105 [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED, 106 adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED]).then(() => { 107 console.log('Succeeded in subscribing managed event'); 108 }).catch((error: BusinessError) => { 109 console.error(`Failed to subscribe managed event. Code: ${error.code}, message: ${error.message}`); 110 }) 111} 112``` 113 114## 相关实例 115 116针对EnterpriseAdminExtensionAbility开发,有以下相关示例可供参考: 117 118- [企业设备管理扩展(ArkTS)(Full SDK)(API9)](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Release/code/SystemFeature/ApplicationModels/EnterpriseAdminExtensionAbility) 119