• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# EnterpriseAdminExtensionAbility Development
2
3## Introduction
4
5**EnterpriseAdminExtensionAbility** is an essential component for device administrator applications. When developing an MDM device administrator application, you need to create an **EnterpriseAdminExtensionAbility** instance and implement MDM service logic in this instance. **EnterpriseAdminExtensionAbility** implements notifications of system management status changes and defines the callbacks to be invoked when a device administrator application is enabled or disabled or an application is installed or uninstalled.
6
7## Available APIs
8The following lists the APIs used in this example. For details about more APIs and their usage, see [@ohos.enterprise.EnterpriseAdminExtensionAbility (EnterpriseAdminExtensionAbility)](../../application-dev/reference/apis-mdm-kit/js-apis-EnterpriseAdminExtensionAbility.md).
9
10| API                                 | Description                        |
11| ----------------------------------------- | ---------------------------- |
12| [onAdminEnabled(): void](../../application-dev/reference/apis-mdm-kit/js-apis-EnterpriseAdminExtensionAbility.md#enterpriseadminextensionabilityonadminenabled)                    | Called when a device administrator application is enabled.  |
13| [onAdminDisabled(): void](../../application-dev/reference/apis-mdm-kit/js-apis-EnterpriseAdminExtensionAbility.md#enterpriseadminextensionabilityonadmindisabled)                   | Called when a device administrator application is disabled.|
14| [onBundleAdded(bundleName: string): void](../../application-dev/reference/apis-mdm-kit/js-apis-EnterpriseAdminExtensionAbility.md#enterpriseadminextensionabilityonbundleadded)   | Called when an application is installed.            |
15| [onBundleRemoved(bundleName: string): void](../../application-dev/reference/apis-mdm-kit/js-apis-EnterpriseAdminExtensionAbility.md#enterpriseadminextensionabilityonbundleremoved) | Called when an application is uninstalled.            |
16
17## How to Develop
18
19Create a project. The project structure is as follows.
20
21![guide_struct_init.png](./figures/guide_struct_init.png)
22
23Create an **ExtensionAbility** of the **EnterpriseAdmin** type, that is, an **EnterpriseAdminExtensionAbility** instance.
24
25![guide_struct_done.png](./figures/guide_struct_done.png)
26
27Open the **EnterpriseAdminAbility.ets** file, import the **EnterpriseAdminExtensionAbility** module, enable it to inherit from the **EnterpriseAdminExtensionAbility** module, and define callbacks, such as **onAdminEnabled()** and **onAdminDisabled()**. When the device administrator application is enabled or disabled, the callback will be invoked to receive notifications.
28
29```ts
30import { EnterpriseAdminExtensionAbility } from '@kit.MDMKit';
31
32export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility {
33  // Callback to be invoked when the device administrator application is enabled. Initialization policy can be set in this callback.
34  onAdminEnabled() {
35    console.info("onAdminEnabled");
36  }
37
38  // Callback to be invoked when the device administrator application is disabled. This callback can be used to notify the enterprise administrator application that the device is no longer under management.
39  onAdminDisabled() {
40    console.info("onAdminDisabled");
41  }
42
43  // Callback to be invoked when an application is installed. This callback can be used to report events.
44  onBundleAdded(bundleName: string) {
45    console.info("EnterpriseAdminAbility onBundleAdded bundleName:" + bundleName);
46  }
47
48  // Callback to be invoked when an application is uninstalled. This callback can be used to report events.
49  onBundleRemoved(bundleName: string) {
50    console.info("EnterpriseAdminAbility onBundleRemoved bundleName" + bundleName);
51  }
52};
53```
54
55In the [module.json5](https://developer.huawei.com/consumer/en/doc/harmonyos-guides-V2/module-configuration-file-0000001427744540-V2) file of the project module, register **EnterpriseAdminAbility** as **ExtensionAbility**, and set type to **enterpriseAdmin** and **srcEntry** to the code path of the **ExtensionAbility** component.
56
57```ts
58"extensionAbilities": [
59  {
60	"name": "EnterpriseAdminAbility",
61	"type": "enterpriseAdmin",
62	"exported": true,
63	"srcEntry": "./ets/enterpriseadminability/EnterpriseAdminAbility.ets"
64  }
65]
66```
67
68