• 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: 企业应用管理场景下,企业管理员订阅应用卸载事件,端侧应用安装和卸载事件通知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.ets373. 打开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