# @ohos.enterprise.bundleManager(包管理)
本模块提供包管理能力,包括添加包安装允许名单、获取包安装允许名单、移除包安装允许名单等。
> **说明:**
>
> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
> 本模块接口仅可在Stage模型下使用。
>
> 本模块接口仅对设备管理应用开放,且调用接口前需激活设备管理应用,具体请参考[MDM Kit开发指南](../../mdm/mdm-kit-guide.md)。
## 导入模块
```ts
import { bundleManager } from '@kit.MDMKit';
```
## bundleManager.addAllowedInstallBundlesSync
addAllowedInstallBundlesSync(admin: Want, appIds: Array<string>, accountId?: number): void
添加应用至应用程序包安装允许名单,添加至允许名单的应用允许在当前/指定用户下安装,其它非允许名单应用不允许安装。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appIds | Array<string> | 是 | 应用ID数组。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let appIds: Array = ['com.example.******_******/******5t5CoBM='];
try {
bundleManager.addAllowedInstallBundlesSync(wantTemp, appIds, 100);
console.info('Succeeded in adding allowed install bundles.');
} catch (err) {
console.error(`Failed to add allowed install bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.removeAllowedInstallBundlesSync
removeAllowedInstallBundlesSync(admin: Want, appIds: Array<string>, accountId?: number): void
在应用程序包安装允许名单中移除应用,在允许名单存在的情况下,不在应用程序包安装允许名单中的应用不允许在当前/指定用户下安装。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appIds | Array<string> | 是 | 应用ID数组。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let appIds: Array = ['com.example.******_******/******5t5CoBM='];
try {
bundleManager.removeAllowedInstallBundlesSync(wantTemp, appIds, 100);
console.info('Succeeded in removing allowed install bundles.');
} catch (err) {
console.error(`Failed to remove allowed install bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.getAllowedInstallBundlesSync
getAllowedInstallBundlesSync(admin: Want, accountId?: number): Array<string>
获取当前/指定用户下的应用程序包安装允许名单。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------------ |
| Array<string> | 返回当前用户下的应用程序包安装允许名单。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
try {
let result: Array = bundleManager.getAllowedInstallBundlesSync(wantTemp, 100);
console.info(`Succeeded in getting allowed install bundles, result : ${JSON.stringify(result)}`);
} catch (err) {
console.error(`Failed to get allowed install bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.addDisallowedInstallBundlesSync
addDisallowedInstallBundlesSync(admin: Want, appIds: Array<string>, accountId?: number): void
添加应用至应用程序包安装禁止名单,添加至禁止名单的应用不允许在当前/指定用户下安装。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appIds | Array<string> | 是 | 应用ID数组。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let appIds: Array = ['com.example.******_******/******5t5CoBM='];
try {
bundleManager.addDisallowedInstallBundlesSync(wantTemp, appIds, 100);
console.info('Succeeded in adding disallowed install bundles.');
} catch (err) {
console.error(`Failed to add disallowed install bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.removeDisallowedInstallBundlesSync
removeDisallowedInstallBundlesSync(admin: Want, appIds: Array<string>, accountId?: number): void
在应用程序包安装禁止名单中移除应用,在禁止名单存在的情况下,在应用程序包安装禁止名单中的应用不允许在当前/指定用户下安装。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appIds | Array<string> | 是 | 应用ID数组。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let appIds: Array = ['com.example.******_******/******5t5CoBM='];
try {
bundleManager.removeDisallowedInstallBundlesSync(wantTemp, appIds, 100)
console.info('Succeeded in removing disallowed install bundles.');
} catch (err) {
console.error(`Failed to remove disallowed install bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.getDisallowedInstallBundlesSync
getDisallowedInstallBundlesSync(admin: Want, accountId?: number): Array<string>
获取当前/指定用户下的应用程序包安装禁止名单。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------------ |
| Array<string> | 返回当前用户下的应用程序包安装禁止名单。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
try {
// 参数需根据实际情况进行替换
let result: Array = bundleManager.getDisallowedInstallBundlesSync(wantTemp, 100);
console.info(`Succeeded in getting disallowed install bundles, result : ${JSON.stringify(result)}`);
} catch (err) {
console.error(`Failed to get disallowed install bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.addDisallowedUninstallBundlesSync
addDisallowedUninstallBundlesSync(admin: Want, appIds: Array<string>, accountId?: number): void
添加应用至包卸载禁止名单,添加至禁止名单的应用不允许在当前/指定用户下卸载。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appIds | Array<string> | 是 | 应用ID数组。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let appIds: Array = ['com.example.******_******/******5t5CoBM='];
try {
// 参数需根据实际情况进行替换
bundleManager.addDisallowedUninstallBundlesSync(wantTemp, appIds, 100);
console.info('Succeeded in adding disallowed uninstall bundles.');
} catch (err) {
console.error(`Failed to add disallowed uninstall bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.removeDisallowedUninstallBundlesSync
removeDisallowedUninstallBundlesSync(admin: Want, appIds: Array<string>, accountId?: number): void
在包卸载禁止名单中移除应用。在禁止名单存在的情况下,在包卸载禁止名单中的应用不允许在当前/指定用户下卸载。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appIds | Array<string> | 是 | 应用ID数组。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let appIds: Array = ['com.example.******_******/******5t5CoBM='];
try {
// 参数需根据实际情况进行替换
bundleManager.removeDisallowedUninstallBundlesSync(wantTemp, appIds, 100);
console.info('Succeeded in removing disallowed uninstall bundles.');
} catch (err) {
console.error(`Failed to remove disallowed uninstall bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.getDisallowedUninstallBundlesSync
getDisallowedUninstallBundlesSync(admin: Want, accountId?: number): Array<string>
获取当前/指定用户下包卸载禁止名单。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| accountId | number | 否 | 用户ID,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。
- 调用接口时,若传入accountId,表示指定用户。
- 调用接口时,若未传入accountId,表示当前用户。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------------ |
| Array<string> | 返回当前用户下的包卸载禁止名单。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
try {
// 参数需根据实际情况进行替换
let result: Array = bundleManager.getDisallowedUninstallBundlesSync(wantTemp, 100);
console.info(`Succeeded in getting disallowed uninstall bundles, result : ${JSON.stringify(result)}`);
} catch (err) {
console.error(`Failed to get disallowed uninstall bundles. Code is ${err.code}, message is ${err.message}`);
}
```
## bundleManager.uninstall
uninstall(admin: Want, bundleName: string, userId?: number, isKeepData?: boolean): Promise<void>
卸载当前/指定用户下的指定包接口,选择是否保留包数据(由isKeepData指定)。使用promise异步回调。
**需要权限:** ohos.permission.ENTERPRISE_INSTALL_BUNDLE
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| bundleName | string | 是 | 应用程序包名。 |
| userId | number | 否 | 用户ID,取值范围:大于等于0。
- 调用接口时,若传入userId,表示指定用户。
- 调用接口时,若未传入userId,表示当前用户。 |
| isKeepData | boolean | 否 | 是否保留包数据,true表示保留,false表示不保留。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ----------------------------------------------------- |
| Promise<void> | 无返回结果的Promise对象。当包卸载失败时抛出错误对象。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 参数需根据实际情况进行替换
bundleManager.uninstall(wantTemp, 'bundleName', 100, true).then(() => {
console.info('Succeeded in uninstalling bundles.');
}).catch((err: BusinessError) => {
console.error(`Failed to uninstall bundles. Code is ${err.code}, message is ${err.message}`);
});
```
## bundleManager.install
install(admin: Want, hapFilePaths: Array\, installParam?: InstallParam): Promise\
安装指定路径下的应用包。使用promise异步回调。此接口只能安装分发类型为enterprise_mdm(MDM应用)和enterprise_normal(普通企业应用)类型的应用,可以通过[getBundleInfoForSelf](../apis-ability-kit/js-apis-bundleManager.md#bundlemanagergetbundleinfoforself)接口查询应用自身的[BundleInfo](../apis-ability-kit/js-apis-bundleManager-bundleInfo.md),其中BundleInfo.appInfo.appDistributionType为应用的分发类型。
**需要权限:** ohos.permission.ENTERPRISE_INSTALL_BUNDLE
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------------------------------------- | ---- | ---------------------- |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| hapFilePaths | Array\ | 是 | 待安装应用包路径数组。 |
| installParam | [InstallParam](#installparam) | 否 | 应用包安装参数。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------------------------------------- |
| Promise<void> | 无返回结果的Promise对象。当应用程序包安装失败时,抛出错误对象。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 9201002 | Failed to install the application. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 为当前用户安装应用
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let hapFilePaths: Array = ['/data/storage/el2/base/haps/entry/testinstall/ExtensionTest.hap'];
bundleManager.install(wantTemp, hapFilePaths).then(() => {
console.info('Succeeded in installing bundles.');
}).catch((err: BusinessError) => {
console.error(`Failed to install bundles. Code is ${err.code}, message is ${err.message}`);
});
```
```ts
import { bundleManager } from '@kit.MDMKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 为所有用户安装应用
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let hapFilePaths: Array = ['/data/storage/el2/base/haps/entry/testinstall/ExtensionTest.hap'];
const params: Record = {
'ohos.bms.param.enterpriseForAllUser': 'true'
};
let installParam: bundleManager.InstallParam = {
// 需根据实际情况进行替换
userId: 100,
installFlag: 0,
parameters: params
};
bundleManager.install(wantTemp, hapFilePaths, installParam).then(() => {
console.info('Succeeded in installing bundles.');
}).catch((err: BusinessError) => {
console.error(`Failed to install bundles. Code is ${err.code}, message is ${err.message}`);
});
```
## bundleManager.getInstalledBundleList20+
getInstalledBundleList(admin: Want, accountId: number): Promise\>
获取设备指定用户下已安装应用列表。使用Promise异步回调。
**需要权限:** ohos.permission.ENTERPRISE_GET_ALL_BUNDLE_INFO
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------------------------------------- | ---- | ---------------------- |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| accountId | number | 是 | 用户ID,取值为正整数,取值范围:大于等于0。
accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------------------------------------- |
| Promise<Array<[BundleInfo](#bundleinfo20)>> | Promise对象,返回已安装应用包信息。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. | |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
**示例:**
```ts
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { bundleManager } from '@kit.MDMKit';
let wantTemp: Want = {
// 需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
// 需根据实际情况进行替换
let accountId: number = 100;
bundleManager.getInstalledBundleList(wantTemp, accountId).then((result) => {
console.info('Succeeded in getting installed bundle list.');
}).catch((err: BusinessError) => {
console.error(`Failed to get installed bundle list. Code is ${err.code}, message is ${err.message}`);
});
```
## InstallParam
应用包安装需指定的参数信息。
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
| 名称 | 类型 | 只读 | 可选 | 说明 |
| ------------------------ | ---------------------- | ---- | ---- | ------------------------------------------------------------ |
| userId | number | 否 | 是 | 指示用户id,默认值:调用方所在用户,取值范围:大于等于0。 |
| installFlag | number | 否 | 是 |安装标志。枚举值:0:应用初次安装,1:应用覆盖安装,2:应用免安装,默认值为应用初次安装。 |
| parameters19+ | Record<string, string> | 否 | 是 | 扩展参数,默认值为空。key取值支持"ohos.bms.param.enterpriseForAllUser",若对应的value值为"true",表示为所有用户安装应用。 |
## bundleManager.addInstallationAllowedAppDistributionTypes20+
addInstallationAllowedAppDistributionTypes(admin: Want, appDistributionTypes: Array<AppDistributionType>): void
添加可安装应用的分发类型。添加成功后,当前设备可以安装对应分发类型的应用,但无法安装[AppDistributionType](#appdistributiontype20)中未添加的分发类型的应用。
应用程序签名证书的分发类型详细介绍请参见[ApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md#applicationinfo-1)的appDistributionType属性。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appDistributionTypes | Array<[AppDistributionType](#appdistributiontype20)> | 是 | 应用程序签名证书的分发类型数组。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 9200012 | Parameter verification failed. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
**示例:**
```ts
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { bundleManager } from '@kit.MDMKit';
let wantTemp: Want = {
//需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
try {
let appDistributionTypes: Array = [bundleManager.AppDistributionType.APP_GALLERY];
bundleManager.addInstallationAllowedAppDistributionTypes(wantTemp, appDistributionTypes);
console.info('Succeeded in adding allowed appDistributionTypes.');
} catch (err) {
console.error(`Failed to add allowed appDistributionTypes. Code: ${err.code}, message: ${err.message}`);
}
```
## bundleManager.removeInstallationAllowedAppDistributionTypes20+
removeInstallationAllowedAppDistributionTypes(admin: Want, appDistributionTypes: Array<AppDistributionType>): void
移除应用的分发类型。若只移除了数组中部分的分发类型,则当前设备可以安装数组中剩下的分发类型的应用,但无法安装[AppDistributionType](#appdistributiontype20)中未添加的分发类型的应用。
应用程序签名证书的分发类型详细介绍请参见[ApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md#applicationinfo-1)的appDistributionType属性。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
| appDistributionTypes | Array<[AppDistributionType](#appdistributiontype20)> | 是 | 应用程序签名证书的分发类型数组。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 9200012 | Parameter verification failed. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
**示例:**
```ts
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { bundleManager } from '@kit.MDMKit';
let wantTemp: Want = {
//需根据实际情况进行替换
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility'
};
try {
let appDistributionTypes: Array = [bundleManager.AppDistributionType.APP_GALLERY];
bundleManager.removeInstallationAllowedAppDistributionTypes(wantTemp, appDistributionTypes);
console.info('Succeeded in removing allowed appDistributionTypes.');
} catch (err) {
console.error(`Failed to remove allowed appDistributionTypes. Code: ${err.code}, message: ${err.message}`);
}
```
## bundleManager.getInstallationAllowedAppDistributionTypes20+
getInstallationAllowedAppDistributionTypes(admin: Want): Array<AppDistributionType>
获取可安装的应用程序签名证书的分发类型。
**需要权限:** ohos.permission.ENTERPRISE_SET_BUNDLE_INSTALL_POLICY
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
**模型约束:** 此接口仅可在Stage模型下使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 |
**返回值:**
| 类型 | 说明 |
| ---------------------------------- | ------------------------- |
| Array<[AppDistributionType](#appdistributiontype20)> | 应用程序签名证书的分发类型数组。 |
**错误码**:
以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. | |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
**示例:**
```ts
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { bundleManager } from '@kit.MDMKit';
let wantTemp: Want = {
//需根据实际情况进行替换
bundleName: 'com.example.edmtest',
abilityName: 'com.example.edmtest.EnterpriseAdminAbility'
};
try {
let result: Array = bundleManager.getInstallationAllowedAppDistributionTypes(wantTemp);
console.info(`Succeeded in getting allowed appDistributionTypes. Result: ${JSON.stringify(result)}`);
} catch (err) {
console.error(`Failed to get allowed appDistributionTypes. Code: ${err.code}, message: ${err.message}`);
}
```
## AppDistributionType20+
应用程序签名证书的分发类型。详细介绍请参见[ApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md#applicationinfo-1)的appDistributionType属性。
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
| 名称 | 值 | 说明 |
| ----------- | -------- | ------------------------------- |
| APP_GALLERY | 1 | 应用市场安装的应用。 |
| ENTERPRISE | 2 | 企业应用。 |
| ENTERPRISE_NORMAL | 3 | 普通企业应用。 |
| ENTERPRISE_MDM | 4 | 企业MDM应用。 |
| INTERNALTESTING | 5 | 应用市场内测的应用。 |
| CROWDTESTING | 6 | 众包测试应用。 |
## BundleInfo20+
描述应用包信息。
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
| 名称 | 类型 | 只读 | 可选 | 说明 |
| --------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
| name | string | 是 | 否 | 应用包的名称,对应[app.json5](../../quick-start/app-configuration-file.md)中配置的bundleName字段。 |
| vendor | string | 是 | 否 | 应用包的供应商,对应[app.json5](../../quick-start/app-configuration-file.md)中配置的vendor字段。 |
| versionCode | number | 是 | 否 | 应用包的版本号,对应[app.json5](../../quick-start/app-configuration-file.md)中配置的versionCode字段。 |
| versionName | string | 是 | 否 | 应用包的版本文本描述信息,对应[app.json5](../../quick-start/app-configuration-file.md)中配置的versionName字段。 |
| minCompatibleVersionCode | number | 是 | 否 | 分布式场景下的应用包兼容的最低版本,对应[app.json5](../../quick-start/app-configuration-file.md)中配置的minCompatibleVersionCode字段。 |
| targetVersion | number | 是 | 否 | 应用运行目标版本,对应[app.json5](../../quick-start/app-configuration-file.md)中配置的targetAPIVersion字段。 |
| appInfo | [ApplicationInfo](#applicationinfo20) | 是 | 否 | 应用程序信息,包括应用程序名称、应用程序的安装目录等。 |
| signatureInfo | [SignatureInfo](#signatureinfo20) | 是 | 否 | 应用包的签名信息。 |
| installTime | number | 是 | 否 | 应用包安装时间戳,表示从1970-01-01 08:00:00 UTC+8逝去的毫秒数,单位毫秒。 |
| updateTime | number | 是 | 否 | 应用包更新时间戳,表示从1970-01-01 08:00:00 UTC+8逝去的毫秒数,单位毫秒。 |
| appIndex | number | 是 | 否 | 应用包的分身索引标识,仅在分身应用中生效。 |
| firstInstallTime | number | 是 | 是 | 应用在当前设备的首次安装时间戳,表示从1970-01-01 08:00:00 UTC+8逝去的毫秒数,单位毫秒,预置应用的首次安装时间戳为1533657660000。 |
## SignatureInfo20+
描述应用包的签名信息。
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
| 名称 | 类型 | 只读 | 可选 | 说明 |
| --------- | -------------- | ---- | ---- | --------------------------- |
| appId | string | 是 | 否 | 应用的appId。 |
|fingerprint| string | 是 | 否 | 应用包的指纹信息。使用的签名证书发生变化,该字段会发生变化。 |
|appIdentifier| string | 是 | 否 | 应用的唯一标识,是AppGallery Connect创建应用时分配的[APP ID](https://developer.huawei.com/consumer/cn/doc/app/agc-help-createharmonyapp-0000001945392297),为云端统一分配的随机字符串。该ID在应用全生命周期中不会发生变化,包括版本升级、证书变更、开发者公私钥变更、应用转移等。 |
|certificate| string | 是 | 是 | 应用的证书公钥。 |
## ApplicationInfo20+
应用程序信息。
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
| 名称 | 类型 | 只读 | 可选 | 说明 |
| -------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
| name | string | 是 | 否 | 应用的Bundle名称。 |
| description | string | 是 | 否 | 应用的描述信息,使用示例:`"description": $string: mainability_description"`。关于description的详细信息可参见descriptionResource字段说明。 |
| descriptionId | number | 是 | 否 | 应用的描述信息的资源id。 |
| enabled | boolean | 是 | 否 | 判断应用程序是否可以使用,true表示可以使用,false表示不可使用。 |
| label | string | 是 | 否 | 应用的名称,使用示例:`"label": "$string: mainability_description"`。关于label的详细信息可参见labelResource字段说明。 |
| labelId | number | 是 | 否 | 应用名称的资源id。 |
| icon | string | 是 | 否 | 应用程序的图标,使用示例:`"icon": "$media:icon"`。关于icon的详细信息可参见iconResource字段说明。 |
| iconId | number | 是 | 否 | 应用程序图标的资源id。 |
| process | string | 是 | 否 | 应用程序的进程名称。 |
| codePath | string | 是 | 否 | 应用程序的安装目录。 |
| removable | boolean | 是 | 否 | 应用程序是否可以被移除,true表示可以被移除,false表示不可以被移除。 |
| accessTokenId | number | 是 | 否 | 应用程序的accessTokenId。 |
| uid | number | 是 | 否 | 应用程序的Uid。 |
| iconResource | [Resource](#resource20) | 是 | 否 | 应用程序的图标资源信息,包含了该资源的信息的bundleName、moduleName和id。 |
| labelResource | [Resource](#resource20) | 是 | 否 | 应用程序的标签资源信息,包含了该资源的信息的bundleName、moduleName和id。 |
| descriptionResource | [Resource](#resource20) | 是 | 否 | 应用程序的描述资源信息,包含了该资源的信息的bundleName、moduleName和id。 |
| appDistributionType | string | 是 | 否 | 应用程序签名证书的分发类型,分为:
- app_gallery:应用市场分发的应用。
- enterprise:企业应用,可以安装到个人设备上。
- enterprise_mdm:企业MDM应用,只能安装在企业设备上。需要设备管理特权,比如远程锁定,安装普通企业应用等。
- enterprise_normal:普通企业应用,只能通过企业MDM应用安装在企业设备上。无需设备管理特权。
- os_integration:系统预置应用。
- crowdtesting:众包测试应用。
- internaltesting:应用市场内测的应用。
- none:其他。 |
| appProvisionType | string | 是 | 否 | 应用程序签名证书文件的类型,支持的取值如下:
- debug:调试类型。
- release:发布类型。 |
| systemApp | boolean | 是 | 否 | 应用是否为系统应用,true表示系统应用,false表示非系统应用。 |
| debug | boolean | 是 | 否 | 标识应用是否处于调试模式,true表示应用处于调试模式,false表示应用处于非调试模式。 |
| dataUnclearable | boolean | 是 | 否 | 标识应用数据是否可被删除。true表示不可删除,false表示可以删除。 |
| nativeLibraryPath | string | 是 | 否 | 应用程序的本地库文件路径。 |
| appIndex | number | 是 | 否 | 应用包的分身索引标识,仅在分身应用中生效。 |
| installSource | string | 是 | 否 | 应用程序的安装来源,支持的取值如下:
- pre-installed表示应用为第一次开机时安装的预置应用。
- ota表示应用为系统升级时新增的预置应用。
- recovery表示卸载后再恢复的预置应用。
- bundleName表示应用由此应用包名对应的应用安装。
- unknown表示应用安装来源未知。 |
| releaseType | string | 是 | 否 | 标识应用打包时使用的SDK的发布类型。当前SDK的发布类型可能为Canary、Beta、Release,其中Canary和Beta可能通过序号进一步细分,例如Canary1、Canary2、Beta1、Beta2等。开发者可通过对比应用打包依赖的SDK发布类型和OS的发布类型([deviceInfo.distributionOSReleaseType](../apis-basic-services-kit/js-apis-device-info.md))来判断兼容性。 |
## Resource20+
资源相关信息,包括应用包名、应用模块名、资源id。
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
| 名称 | 类型 | 只读 | 可选 |说明 |
| ---------- | ------ | ----- | ---- | ---------------|
| bundleName | string | 否 | 否 | 应用的bundle名称。 |
| moduleName | string | 否 | 否 | 应用的module名称。 |
| id | number | 否 | 否 | 资源的id值。 |