enterprise-extensionAbility.md 5.9 KB
Newer Older
L
liwuli 已提交
1 2 3 4
# EnterpriseAdminExtensionAbility开发指南

## EnterpriseAdminExtensionAbility简介

L
liwuli 已提交
5
企业设备管理扩展能力,是MDM(Mobile Device Management)应用必备组件。当开发者为企业开发MDM应用时,需继承EnterpriseAdminExtensionAbility,在EnterpriseAdminExtensionAbility实例中实现MDM业务逻辑,EnterpriseAdminExtensionAbility实现了系统管理状态变化通知功能,并定义了管理应用激活、去激活、应用安装、卸载事件等回调接口。
L
liwuli 已提交
6 7 8

## 约束与限制

L
liwuli 已提交
9
  仅支持设备管理员应用使用。(功能限制)
10

L
liwuli 已提交
11

L
liwuli 已提交
12
## 场景:监听设备管理器激活、去激活、应用安装、卸载事件
L
liwuli 已提交
13

L
liwuli 已提交
14
### 概述
L
liwuli 已提交
15 16 17 18 19

onAdminEnabled:由企业管理员或者员工部署MDM应用,激活设备管理器,系统通知MDM应用已激活DeviceAdmin权限。MDM应用可在onAdminEnabled回调函数中进行初始化策略设置。

onAdminDisabled:由系统或者员工去激活设备管理器,通知去激活DeviceAdmin权限,应用可以通知企业管理员设备已脱管。

L
liwuli 已提交
20
onBundleAdded:  企业应用管理场景下,企业管理员订阅应用安装事件,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。
L
liwuli 已提交
21

L
liwuli 已提交
22
onBundleRemoved: 企业应用管理场景下,企业管理员订阅应用卸载事件,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。
L
liwuli 已提交
23

L
liwuli 已提交
24
### 接口说明
L
liwuli 已提交
25 26 27

| 类名                            | 接口名称                                  | 描述                         |
| :------------------------------ | ----------------------------------------- | ---------------------------- |
L
liwuli 已提交
28
| EnterpriseAdminExtensionAbility | onAdminEnabled(): void                    | 设备管理器应用激活回调方法   |
L
liwuli 已提交
29 30 31 32
| EnterpriseAdminExtensionAbility | onAdminDisabled(): void                   | 设备管理器应用去激活回调方法 |
| EnterpriseAdminExtensionAbility | onBundleAdded(bundleName: string): void   | 应用安装回调方法             |
| EnterpriseAdminExtensionAbility | onBundleRemoved(bundleName: string): void | 应用卸载回调方法             |

L
liwuli 已提交
33
### 开发步骤
L
liwuli 已提交
34

L
liwuli 已提交
35
开发者在实现EnterpriseAdminExtensionAbility的时候,需先激活设备管理员应用,并在设备管理员应用的代码目录下新建ExtensionAbility,具体步骤如下。
L
liwuli 已提交
36 37 38

1. 在工程Module对应的ets目录下,右键选择“New > Directory”,新建一个目录并命名为EnterpriseExtAbility。
2. 在EnterpriseExtAbility目录,右键选择“New > TypeScript File”,新建一个TypeScript文件并命名为EnterpriseExtAbility.ts。
L
liwuli 已提交
39
3. 打开EnterpriseExtAbility.ts文件,导入EnterpriseAdminExtensionAbility模块,自定义类继承EnterpriseAdminExtensionAbility并加上需要的应用通知回调方法,如onAdminEnabled()、onAdminDisabled()等回调方法。当设备管理员应用被激活或者去激活时,则可以在对应回调方法中接受系统发送通知。
L
liwuli 已提交
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

```ts
import EnterpriseAdminExtensionAbility from '@ohos.enterprise.EnterpriseAdminExtensionAbility';

export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility {

    onAdminEnabled() {
        console.info("onAdminEnabled");
    }

    onAdminDisabled() {
        console.info("onAdminDisabled");
    }
    
    onBundleAdded(bundleName: string) {
        console.info("EnterpriseAdminAbility onBundleAdded bundleName:" + bundleName)
    }

    onBundleRemoved(bundleName: string) {
        console.info("EnterpriseAdminAbility onBundleRemoved bundleName" + bundleName)
    }
};
```

64
​	4.在工程Module对应的[module.json5](../quick-start/module-configuration-file.md)配置文件中注册ServiceExtensionAbility,type标签需要设置为“enterpriseAdmin”,srcEntry标签表示当前ExtensionAbility组件所对应的代码路径。
L
liwuli 已提交
65 66 67 68 69 70

```ts
"extensionAbilities": [
      {
        "name": "ohos.samples.enterprise_admin_ext_ability",
        "type": "enterpriseAdmin",
71
        "exported": true,
72
        "srcEntry": "./ets/enterpriseextability/EnterpriseAdminAbility.ts"
L
liwuli 已提交
73 74 75 76 77 78
      }
    ]
```

## 使用示例

L
liwuli 已提交
79
通过@ohos.enterprise.adminManager模块中的subscribeManagedEvent接口进行企业设备管理事件的订阅,订阅应用安装、卸载事件。当订阅成功后,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。并可以通过unsubscribeManagedEvent接口进行企业设备管理事件的去订阅。
L
liwuli 已提交
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115

```ts
  @State subscribeManagedEventMsg: string = ""
  @State unsubscribeManagedEventMsg: string = ""

  async subscribeManagedEventCallback() {
    await adminManager.subscribeManagedEvent(this.admin,
      [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED,
      adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED], (error) => {
        if (error) {
          this.subscribeManagedEventMsg = 'subscribeManagedEvent Callback::errorCode: ' + error.code + ' errorMessage: ' + error.message
        } else {
          this.subscribeManagedEventMsg = 'subscribeManagedEvent Callback::success'
        }
      })
  }

  async unsubscribeManagedEventPromise() {
    await adminManager.unsubscribeManagedEvent(this.admin,
      [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED,
      adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED]).then(() => {
      this.unsubscribeManagedEventMsg = 'unsubscribeManagedEvent Promise::success'
    }).catch((error) => {
      this.unsubscribeManagedEventMsg = 'unsubscribeManagedEvent Promise::errorCode: ' + error.code + ' errorMessage: ' + error.message
    })
  }
```



## 相关实例

针对EnterpriseAdminExtensionAbility开发,有以下相关示例可供参考:

[EnterpriseAdminExtensionAbility:EnterpriseAdminExtensionAbility的创建与使用(ArkTS) (API9)](https://gitee.com/openharmony/applications_app_samples/tree/master/customization/EnterpriseAdminExtensionAbility)