1# MDM Kit Development 2 3## Introduction 4 5An device administrator application is an application with the [EnterpriseAdminExtensionAbility](mdm-kit-admin.md). It implements functions such as enterprise device management and event listening, application management, feature restriction management, security management, device settings, device control, device information acquisition, hardware peripheral management, system management, and network management. For details about the APIs, see [MDM Kit](../reference/apis-mdm-kit/Readme-EN.md). 6 7## How to Develop 8 9To develop a device administrator application, perform the following steps: 10 11<!--RP1--> 12 131. Create an **EnterpriseAdminExtensionAbility** instance. 14 152. Declare the permissions required by the device administrator application. 16 173. Develop and debug MDM functionalities. 18 19<!--RP1End--> 20 21 22<!--RP2--><!--RP2End--> 23 24### Creating an **EnterpriseAdminExtensionAbility** Instance 25 26For details, see [EnterpriseAdminExtensionAbility Development](mdm-kit-admin.md). 27 28### Declaring Required Permissions 29 30Before declaring the required permissions, ensure that the [basic principles for using permissions](../security/AccessToken/app-permission-mgmt-overview.md#basic-principles-for-using-permissions) are met. Then, declare the permissions required by the application under **requestPermissions** in the [module.json5](../quick-start/module-configuration-file.md) file of the module of the project. 31 32Example: 33 34```ts 35"requestPermissions": [ 36 { 37 "name": "ohos.permission.MANAGE_ENTERPRISE_DEVICE_ADMIN" 38 }, 39] 40``` 41 42> **NOTE** 43> 44> The required permissions vary with the API to call. For details, see [Enterprise Device Management](../reference/apis-mdm-kit/js-apis-enterprise-adminManager.md) and other related APIs. 45> 46> <!--RP4--><!--RP4End--> 47 48### Developing MDM Functionalities 49 501. Import modules. 51 52 MDM Kit provides a wide variety of of APIs for application management, communication management, security management, feature restriction management, intra-system management, device settings and query, device control, and more. Import related modules based on service requirements. In this example, **adminManager** and **restrictions** are imported. 53 54 ```ts 55 import { adminManager, restrictions } from '@kit.MDMKit'; 56 ``` 57 582. Call APIs to implement related functionalities. For example, disable Wi-Fi for devices. 59 60 ```ts 61 import { Want } from '@kit.AbilityKit'; 62 let wantTemp: Want = { 63 bundleName: 'com.example.xxx', 64 abilityName: 'EnterpriseAdminAbility', 65 }; 66 try { 67 restrictions.setDisallowedPolicy(wantTemp, "wifi", true); 68 console.info("disable wifi success."); 69 } catch (error) { 70 console.info("disable wifi fail."); 71 } 72 ``` 73 74### Debugging 75 76The MDM APIs can be called only after the **EnterpriseAdminExtensionAbility** is enabled. During the debugging process, you can use the following hdc commands to enable and disable an **EnterpriseAdminExtensionAbility**: 77 78```bash 79:: Enable an EnterpriseAdminExtensionAbility. 80hdc shell edm enable-admin -n Bundle_name -a EnterpriseAdminExtensionAbility class name 81:: Disable an EnterpriseAdminExtensionAbility. 82hdc shell edm disable-admin -n Bundle_name 83``` 84 85> **NOTE** 86> 87> Only one super device administrator application can be enabled on a device. 88> 89> <!--RP5--><!--RP5End--> 90 91<!--RP6--><!--RP6End--> 92