• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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: 企业应用管理场景下,企业管理员取消订阅应用安装卸载事件。
23
24### 接口说明
25
26| 类名                            | 接口名称                                  | 描述                         |
27| :------------------------------ | ----------------------------------------- | ---------------------------- |
28| EnterpriseAdminExtensionAbility | onAdminDisabled(): void                   | 设备管理器应用去激活回调方法 |
29| EnterpriseAdminExtensionAbility | onBundleAdded(bundleName: string): void   | 应用安装回调方法             |
30| EnterpriseAdminExtensionAbility | onAdminEnabled(): void                    | 设备管理器应用激活回调方法   |
31| EnterpriseAdminExtensionAbility | onBundleRemoved(bundleName: string): void | 应用卸载回调方法             |
32
33### 开发步骤
34
35开发者在实现EnterpriseAdminExtensionAbility的时候,需先激活设备管理员应用,并在设备管理员应用的代码目录下新建ExtensionAbility,具体步骤如下。
36
371. 在工程Module对应的ets目录下,右键选择“New > Directory”,新建一个目录并命名为EnterpriseExtAbility。
382. 在EnterpriseExtAbility目录,右键选择“New > TypeScript File”,新建一个TypeScript文件并命名为EnterpriseExtAbility.ts393. 打开EnterpriseExtAbility.ts文件,导入EnterpriseAdminExtensionAbility模块,自定义类继承EnterpriseAdminExtensionAbility并加上需要的应用通知回调方法,如onAdminEnabled()、onAdminDisabled()等回调方法。当设备管理员应用被激活或者去激活时,则可以在对应回调方法中接受系统发送通知。
40
41```ts
42import EnterpriseAdminExtensionAbility from '@ohos.enterprise.EnterpriseAdminExtensionAbility';
43
44export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility {
45
46    onAdminEnabled() {
47        console.info("onAdminEnabled");
48    }
49
50    onAdminDisabled() {
51        console.info("onAdminDisabled");
52    }
53
54    onBundleAdded(bundleName: string) {
55        console.info("EnterpriseAdminAbility onBundleAdded bundleName:" + bundleName)
56    }
57
58    onBundleRemoved(bundleName: string) {
59        console.info("EnterpriseAdminAbility onBundleRemoved bundleName" + bundleName)
60    }
61};
62```
63
64​	4.在工程Module对应的[module.json5](../quick-start/module-configuration-file.md)配置文件中注册ServiceExtensionAbility,type标签需要设置为“enterpriseAdmin”,srcEntry标签表示当前ExtensionAbility组件所对应的代码路径。
65
66```ts
67"extensionAbilities": [
68      {
69        "name": "ohos.samples.enterprise_admin_ext_ability",
70        "type": "enterpriseAdmin",
71        "exported": true,
72        "srcEntry": "./ets/enterpriseextability/EnterpriseAdminAbility.ts"
73      }
74    ]
75```
76
77## 使用示例
78
79通过@ohos.enterprise.adminManager模块中的subscribeManagedEvent接口和unsubscribeManagedEvent接口进行企业设备管理事件的订阅,订阅应用安装、卸载事件。当订阅成功后,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。
80
81```ts
82  @State managedEvents: Array<adminManager.ManagedEvent> = [0,1]
83  @State subscribeManagedEventMsg: string = ""
84  @State unsubscribeManagedEventMsg: string = ""
85
86  async subscribeManagedEventCallback() {
87    await adminManager.subscribeManagedEvent(this.admin,
88      [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED,
89      adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED], (error) => {
90        if (error) {
91          this.subscribeManagedEventMsg = 'subscribeManagedEvent Callback::errorCode: ' + error.code + ' errorMessage: ' + error.message
92        } else {
93          this.subscribeManagedEventMsg = 'subscribeManagedEvent Callback::success'
94        }
95      })
96  }
97
98  async unsubscribeManagedEventPromise() {
99    await adminManager.unsubscribeManagedEvent(this.admin,
100      [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED,
101      adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED]).then(() => {
102      this.unsubscribeManagedEventMsg = 'unsubscribeManagedEvent Promise::success'
103    }).catch((error) => {
104      this.unsubscribeManagedEventMsg = 'unsubscribeManagedEvent Promise::errorCode: ' + error.code + ' errorMessage: ' + error.message
105    })
106  }
107```
108
109## 相关实例
110
111针对EnterpriseAdminExtensionAbility开发,有以下相关示例可供参考:
112
113- [企业设备管理扩展(ArkTS)(Full SDK)(API9)](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-3.2-Release/code/SystemFeature/ApplicationModels/EnterpriseAdminExtensionAbility)