enterprise-extensionAbility.md 5.6 KB
Newer Older
L
Ling 已提交
1
# EnterpriseAdminExtensionAbility
L
liwuli 已提交
2 3 4

## 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 35 36

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

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

export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility {
L
liwuli 已提交
43 44 45
  onAdminEnabled() {
    console.info("onAdminEnabled");
  }
L
liwuli 已提交
46

L
liwuli 已提交
47 48 49 50 51 52 53 54 55 56 57
  onAdminDisabled() {
    console.info("onAdminDisabled");
  }
  
  onBundleAdded(bundleName: string) {
    console.info("EnterpriseAdminAbility onBundleAdded bundleName:" + bundleName);
  }

  onBundleRemoved(bundleName: string) {
    console.info("EnterpriseAdminAbility onBundleRemoved bundleName" + bundleName);
  }
L
liwuli 已提交
58 59 60
};
```

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

L
liwuli 已提交
63
```json
L
liwuli 已提交
64 65 66 67
"extensionAbilities": [
      {
        "name": "ohos.samples.enterprise_admin_ext_ability",
        "type": "enterpriseAdmin",
68
        "exported": true,
69
        "srcEntry": "./ets/enterpriseextability/EnterpriseAdminAbility.ts"
L
liwuli 已提交
70 71 72 73 74 75
      }
    ]
```

## 使用示例

L
liwuli 已提交
76
通过@ohos.enterprise.adminManager模块中的subscribeManagedEvent接口进行企业设备管理事件的订阅,订阅应用安装、卸载事件。当订阅成功后,端侧应用安装和卸载事件通知MDM应用,MDM应用可以在回调函数中进行事件上报,通知企业管理员。并可以通过unsubscribeManagedEvent接口进行企业设备管理事件的去订阅。
L
liwuli 已提交
77 78

```ts
L
liwuli 已提交
79 80 81 82
async function subscribeManagedEventCallback() {
  let admin: Want = {
    bundleName: 'com.example.myapplication',
    abilityName: 'EntryAbility',
L
liwuli 已提交
83
  }
L
liwuli 已提交
84 85 86 87 88 89 90 91
  adminManager.subscribeManagedEvent(admin,
    [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED,
    adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED], (error) => {
      if (error) {
        console.error(`Failed to subscribe managed event. Code: ${error.code}, message: ${error.message}`);
      } else {
        console.log('Succeeded in subscribing managed event');
      }
L
liwuli 已提交
92
    })
L
liwuli 已提交
93 94 95 96 97 98
}

async function unsubscribeManagedEventPromise() {
  let admin: Want = {
    bundleName: 'com.example.myapplication',
    abilityName: 'EntryAbility',
L
liwuli 已提交
99
  }
L
liwuli 已提交
100 101 102 103 104 105 106 107
  await adminManager.unsubscribeManagedEvent(admin,
    [adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_ADDED,
    adminManager.ManagedEvent.MANAGED_EVENT_BUNDLE_REMOVED]).then(() => {
    console.log('Succeeded in subscribing managed event');
  }).catch((error: BusinessError) => {
    console.error(`Failed to subscribe managed event. Code: ${error.code}, message: ${error.message}`);
  })
}
L
liwuli 已提交
108 109 110 111 112 113
```

## 相关实例

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

114
- [企业设备管理扩展(ArkTS)(Full SDK)(API9)](https://gitee.com/openharmony/applications_app_samples/tree/master/code/SystemFeature/ApplicationModels/EnterpriseAdminExtensionAbility)