已合并
update: 新增DeviceModeDistributionPolicy枚举及filterBundleListByDeviceModeDistributionPolicies接口文档 #162914
update: 新增DeviceModeDistributionPolicy枚举及filterBundleListByDeviceModeDistributionPolicies接口文档 #162914
已合并
Luobniz21创建于 11 天前
3 个文件变更+149-1
@@ -1672,6 +1672,65 @@ The specified bundle not found app clone preference.
1672 1672 
16731. 确认应用是否需要分身偏好。16731. 确认应用是否需要分身偏好。
16742. 使用[bundleManager.setAppClonePreference](js-apis-bundleManager-sys.md#bundlemanagersetappclonepreference)设置分身偏好后重试。16742. 使用[bundleManager.setAppClonePreference](js-apis-bundleManager-sys.md#bundlemanagersetappclonepreference)设置分身偏好后重试。
1675+ 
1676+## 17700097 设备不支持双模式
1677+ 
1678+**错误信息**
1679+ 
1680+The device does not support the dual mode.
1681+ 
1682+**错误描述**
1683+ 
1684+当前设备不支持双模式(即设备不支持在主模式和副模式之间切换)。
1685+ 
1686+**可能原因**
1687+ 
1688+当前设备为非双模设备,系统参数const.sceneboard.mainmode或persist.sceneboard.ispcmode缺失或值非法。
1689+ 
1690+**处理步骤**
1691+ 
1692+1. 确认设备是否为双模设备,可以在开发者模式下查看设备是否存在系统参数const.sceneboard.mainmode和persist.sceneboard.ispcmode。
1693+2. 若设备不支持双模式,该接口不适用,无需调用。
1694+ 
1695+## 17700098 入参无效
1696+ 
1697+**错误信息**
1698+ 
1699+The input parameter is invalid. It is either outside the range of valid enum values or does not include the following required enum values: [DeviceModeDistributionPolicy.UNIVERSAL_DIFFERENT_PACKAGE, DeviceModeDistributionPolicy.PARTIAL_COMPATIBLE_DIFFERENT_PACKAGE, DeviceModeDistributionPolicy.FULL_COMPATIBLE_DIFFERENT_PACKAGE].
1700+ 
1701+**错误描述**
H
Hhwliujinwei10 天前

[次要] 错误码17700098的错误描述和可能原因中,枚举值数组列表的逗号后缺少空格,与错误信息中的格式不一致,建议补充空格。

likedislike
1702+ 
1703+调用filterBundleListByDeviceModeDistributionPolicies接口时,传入的参数无效。
1704+ 
1705+**可能原因**
1706+ 
1707+1. 传入的枚举值超出DeviceModeDistributionPolicy枚举值范围。
1708+2. 传入的枚举数组未包含所有不同包体的策略(UNIVERSAL_DIFFERENT_PACKAGE、PARTIAL_COMPATIBLE_DIFFERENT_PACKAGE和FULL_COMPATIBLE_DIFFERENT_PACKAGE)。
1709+ 
1710+**处理步骤**
1711+ 
1712+1. 需要检查传入的枚举值,是否有超过DeviceModeDistributionPolicy枚举值。
1713+2. 需要检查传入的枚举数组是否包含了[DeviceModeDistributionPolicy.UNIVERSAL_DIFFERENT_PACKAGE, DeviceModeDistributionPolicy.PARTIAL_COMPATIBLE_DIFFERENT_PACKAGE, DeviceModeDistributionPolicy.FULL_COMPATIBLE_DIFFERENT_PACKAGE],这三个在切换时必须传入。
1714+ 
1715+## 17700099 设备正在安装卸载应用或双模切换正在处理中
1716+ 
1717+**错误信息**
1718+ 
1719+The device is installing or uninstalling an application, or a previous API call is still being processed. Please try again.
1720+ 
1721+**错误描述**
1722+ 
1723+设备正在安装或卸载应用,或者上一次双模切换调用正在处理中,请重试。
1724+ 
1725+**可能原因**
1726+ 
1727+设备正在安装或卸载应用,或者上一次双模切换调用正在处理中。
1728+ 
1729+**处理步骤**
1730+ 
1731+1. 检查下设备是否正在安装、卸载应用。
1732+2. 检查下是否已经调用该接口且双模切换正在处理中。
1733+3. 等待上述操作完成后重新调用该接口。
1675<!--DelEnd-->1734<!--DelEnd-->
1676 1735 
1677## 17700101 包管理服务异常1736## 17700101 包管理服务异常
@@ -129,6 +129,30 @@ import { bundleManager } from '@kit.AbilityKit';
129| MAIN_APP | 1 | 默认使用主应用。 |129| MAIN_APP | 1 | 默认使用主应用。 |
130| CLONE_APP | 2 | 默认使用分身应用。 |130| CLONE_APP | 2 | 默认使用分身应用。 |
131 131 
132+## DeviceModeDistributionPolicy
133+ 
134+设备模式分发策略枚举,用于指定应用程序如何分发到设备上。
135+ 
136+**起始版本:** 26.1.0
137+ 
138+**系统接口:** 此接口为系统接口。
139+ 
140+**系统能力:** SystemCapability.BundleManager.BundleFramework.Core
141+ 
142+**模型约束:** 此接口仅可在Stage模型下使用。
143+ 
144+| 名称 | 值 | 说明 |
145+| --------------- | --- | --- |
146+| UNSPECIFIED | 0 | 未指定设备模式分发策略。 |
147+| MAIN_ONLY | 1 | 应用程序仅在主模式下可用。 |
148+| SUB_ONLY | 2 | 应用程序仅在副模式下可用。 |
149+| UNIVERSAL_IDENTICAL_PACKAGE | 3 | 应用程序在两种模式下都可用,具有相同的包体。 |
150+| UNIVERSAL_DIFFERENT_PACKAGE | 4 | 应用程序在两种模式下都可用,具有不同的包体。 |
151+| PARTIAL_COMPATIBLE_IDENTICAL_PACKAGE | 5 | 应用程序在不同模式之间部分兼容,具有相同的包体。 |
152+| PARTIAL_COMPATIBLE_DIFFERENT_PACKAGE | 6 | 应用程序在不同模式之间部分兼容,具有不同的包体。 |
153+| FULL_COMPATIBLE_IDENTICAL_PACKAGE | 7 | 应用程序在不同模式之间完全兼容,具有相同的包体。 |
154+| FULL_COMPATIBLE_DIFFERENT_PACKAGE | 8 | 应用程序在不同模式之间完全兼容,具有不同的包体。 |
155+ 
132## bundleManager.getApplicationInfo156## bundleManager.getApplicationInfo
133 157 
134getApplicationInfo(bundleName: string, appFlags: number, userId: number, callback: AsyncCallback\<ApplicationInfo>): void158getApplicationInfo(bundleName: string, appFlags: number, userId: number, callback: AsyncCallback\<ApplicationInfo>): void
@@ -6432,6 +6456,71 @@ try {
6432}6456}
6433```6457```
6434 6458 
6459+## bundleManager.filterBundleListByDeviceModeDistributionPolicies
6460+ 
6461+filterBundleListByDeviceModeDistributionPolicies(policies: Array\<DeviceModeDistributionPolicy>): Promise\<void>
6462+ 
6463+支持按设备模式分发策略过滤应用列表。使用Promise异步回调。
6464+ 
6465+**起始版本:** 26.1.0
6466+ 
6467+**系统接口:** 此接口为系统接口。
6468+ 
6469+**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
6470+ 
6471+**系统能力:** SystemCapability.BundleManager.BundleFramework.Core
6472+ 
6473+**模型约束:** 此接口仅可在Stage模型下使用。
6474+ 
6475+**参数:**
6476+ 
6477+| 参数名 | 类型 | 必填 | 说明 |
6478+| ---------- | ------ | ---- | ---------------------------|
6479+| policies | Array\<[DeviceModeDistributionPolicy](#devicemodedistributionpolicy)> | 是 | DeviceModeDistributionPolicy值的数组。入参不能为空,所有值必须在DeviceModeDistributionPolicy的枚举值范围内,且必须包含所有不同包体的策略(UNIVERSAL_DIFFERENT_PACKAGE、PARTIAL_COMPATIBLE_DIFFERENT_PACKAGE和FULL_COMPATIBLE_DIFFERENT_PACKAGE)。 |
6480+ 
6481+**返回值:**
6482+ 
6483+| 类型 | 说明 |
6484+| ----------------------------------------------------------- | --------------------------- |
6485+| Promise\<void> | Promise对象,无返回结果。 |
6486+ 
6487+**错误码:**
6488+ 
6489+以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[包管理子系统通用错误码](errorcode-bundle.md)。
6490+ 
6491+| 错误码ID | 错误信息 |
6492+| -------- | --------------------------------------|
6493+| 201 | Permission denied. |
6494+| 202 | Permission denied. Non-system APP calling system API. |
6495+| 17700097 | The device does not support the dual mode. |
6496+| 17700098 | The input parameter is invalid. It is either outside the range of valid enum values or does not include the following required enum values: [DeviceModeDistributionPolicy.UNIVERSAL_DIFFERENT_PACKAGE, DeviceModeDistributionPolicy.PARTIAL_COMPATIBLE_DIFFERENT_PACKAGE, DeviceModeDistributionPolicy.FULL_COMPATIBLE_DIFFERENT_PACKAGE]. |
6497+| 17700099 | The device is installing or uninstalling an application, or a previous API call is still being processed. Please try again. |
6498+ 
6499+**示例:**
pengdongfa
pengdongfapengdongfa9 天前

示例的运行通过截图需提供

likedislike
6500+ 
6501+```ts
6502+import { bundleManager } from '@kit.AbilityKit';
6503+import { BusinessError } from '@kit.BasicServicesKit';
6504+import { hilog } from '@kit.PerformanceAnalysisKit';
6505+ 
6506+let policies: Array<bundleManager.DeviceModeDistributionPolicy> = [
6507+ bundleManager.DeviceModeDistributionPolicy.UNIVERSAL_DIFFERENT_PACKAGE,
6508+ bundleManager.DeviceModeDistributionPolicy.PARTIAL_COMPATIBLE_DIFFERENT_PACKAGE,
6509+ bundleManager.DeviceModeDistributionPolicy.FULL_COMPATIBLE_DIFFERENT_PACKAGE
6510+];
6511+ 
6512+try {
6513+ bundleManager.filterBundleListByDeviceModeDistributionPolicies(policies).then(() => {
6514+ hilog.info(0x0000, 'testTag', 'filterBundleListByDeviceModeDistributionPolicies successfully');
6515+ }).catch((err: BusinessError) => {
6516+ hilog.error(0x0000, 'testTag', 'filterBundleListByDeviceModeDistributionPolicies failed. Cause: %{public}s', err.message);
6517+ });
6518+} catch (err) {
6519+ let message = (err as BusinessError).message;
6520+ hilog.error(0x0000, 'testTag', 'filterBundleListByDeviceModeDistributionPolicies failed. Cause: %{public}s', message);
6521+}
6522+```
6523+ 
6435## PermissionDef6524## PermissionDef
6436 6525 
6437type PermissionDef = _PermissionDef6526type PermissionDef = _PermissionDef
@@ -1875,7 +1875,7 @@ try {
1875| additionalInfo<sup>10+</sup> | string | 否 | 是|应用安装时的额外信息,默认值为空,最大长度为3000字节。该字段通常由操作系统运营方的应用市场在安装企业应用时指定,用于保存应用的额外信息。 |1875| additionalInfo<sup>10+</sup> | string | 否 | 是|应用安装时的额外信息,默认值为空,最大长度为3000字节。该字段通常由操作系统运营方的应用市场在安装企业应用时指定,用于保存应用的额外信息。 |
1876| verifyCodeParams<sup>(deprecated)<sup> | Array<[VerifyCodeParam](#verifycodeparamdeprecated)> | 否 | 是| 代码签名文件参数,默认值为空,列表长度上限为500。<br/>**说明:**<br/> 从API version 10开始支持,从API version 11开始不再维护,应用的代码签名文件将集成到安装包中,不再需要通过本接口指定安装包的代码签名文件。 |1876| verifyCodeParams<sup>(deprecated)<sup> | Array<[VerifyCodeParam](#verifycodeparamdeprecated)> | 否 | 是| 代码签名文件参数,默认值为空,列表长度上限为500。<br/>**说明:**<br/> 从API version 10开始支持,从API version 11开始不再维护,应用的代码签名文件将集成到安装包中,不再需要通过本接口指定安装包的代码签名文件。 |
1877| pgoParams<sup>11+</sup> | Array<[PGOParam](#pgoparam11)> | 否 | 是| PGO配置文件参数,默认值为空,列表长度上限为500。 |1877| pgoParams<sup>11+</sup> | Array<[PGOParam](#pgoparam11)> | 否 | 是| PGO配置文件参数,默认值为空,列表长度上限为500。 |
1878-| parameters<sup>15+</sup> | Array<[Parameters](#parameters15)> | 否 | 是| 扩展参数,Parameters类型的数组,默认值为空,列表长度上限为1000。Parameters.key取值支持:</br> - "ohos.bms.param.renameInstall":若对应value值为“true”,表示安装时使用共享目录将安装包从应用沙箱移动到安装目录,否则使用常规目录将安装包从应用沙箱拷贝到安装目录。</br> - "ohos.bms.param.enterpriseForAllUser":若对应value值为“true”,表示在安装企业应用时为所有用户安装,该参数只对[appDistributionType](js-apis-bundleManager-applicationInfo.md#applicationinfo-1)为enterprise_mdm和enterprise_normal的应用生效。</br> - "ohos.bms.param.verifyUninstallRule":若对应value值为“true”,表示设置卸载处置规则,用于拦截应用卸载。</br> - "ohos.bms.param.enterpriseManifest":value值为json文件的沙箱路径,json文件用于存储应用的描述文件,包括应用包名等,该字段用于企业应用克隆场景。克隆时,若该json文件存在,则将旧机的应用安装包拷贝到新机进行安装。</br> - "ohos.bms.param.installBundleName":value值为应用的包名,该字段用于应用安装场景(从API version 23开始支持)。如果安装时传入了该字段,则在应用安装过程中调用接口[getBundleInstallStatus](./js-apis-bundleManager.md#bundlemanagergetbundleinstallstatus)能够查询到应用正在安装的状态。</br> - "ohos.bms.param.installAllowDowngrade":若对应value值为“true”,该字段表示支持应用降级安装(从API version 23开始支持),即设备已安装较高版本的应用,也可以覆盖安装较低版本的应用。仅支持签名证书分发类型为app_gallery或者签名证书类型为debug的三方应用降级安装。使用降级安装能力需要同时申请ohos.permission.INSTALL_BUNDLE和ohos.permission.INSTALL_ALLOW_DOWNGRADE权限。</br> - "ohos.bms.param.originalInstallSource":用于指定待安装应用的原始安装来源,对应value取值范围为[ApplicationInfo](../../reference/apis-ability-kit/js-apis-bundleManager-applicationInfo.md#applicationinfo-1)中的installSource字段取值。使用该参数安装的应用,其安装来源installSource会被设置为指定的value值。参数生效条件:待安装应用必须未在设备上安装;当value指定为应用包名时,要求指定的应用必须已安装且为系统应用。从API version 23开始支持。|1878+| parameters<sup>15+</sup> | Array<[Parameters](#parameters15)> | 否 | 是| 扩展参数,Parameters类型的数组,默认值为空,列表长度上限为1000。Parameters.key取值支持:</br> - "ohos.bms.param.renameInstall":若对应value值为“true”,表示安装时使用共享目录将安装包从应用沙箱移动到安装目录,否则使用常规目录将安装包从应用沙箱拷贝到安装目录。</br> - "ohos.bms.param.enterpriseForAllUser":若对应value值为“true”,表示在安装企业应用时为所有用户安装,该参数只对[appDistributionType](js-apis-bundleManager-applicationInfo.md#applicationinfo-1)为enterprise_mdm和enterprise_normal的应用生效。</br> - "ohos.bms.param.verifyUninstallRule":若对应value值为“true”,表示设置卸载处置规则,用于拦截应用卸载。</br> - "ohos.bms.param.enterpriseManifest":value值为json文件的沙箱路径,json文件用于存储应用的描述文件,包括应用包名等,该字段用于企业应用克隆场景。克隆时,若该json文件存在,则将旧机的应用安装包拷贝到新机进行安装。</br> - "ohos.bms.param.installBundleName":value值为应用的包名,该字段用于应用安装场景(从API version 23开始支持)。如果安装时传入了该字段,则在应用安装过程中调用接口[getBundleInstallStatus](./js-apis-bundleManager.md#bundlemanagergetbundleinstallstatus)能够查询到应用正在安装的状态。</br> - "ohos.bms.param.installAllowDowngrade":若对应value值为“true”,该字段表示支持应用降级安装(从API version 23开始支持),即设备已安装较高版本的应用,也可以覆盖安装较低版本的应用。仅支持签名证书分发类型为app_gallery或者签名证书类型为debug的三方应用降级安装。使用降级安装能力需要同时申请ohos.permission.INSTALL_BUNDLE和ohos.permission.INSTALL_ALLOW_DOWNGRADE权限。</br> - "ohos.bms.param.originalInstallSource":用于指定待安装应用的原始安装来源,对应value取值范围为[ApplicationInfo](../../reference/apis-ability-kit/js-apis-bundleManager-applicationInfo.md#applicationinfo-1)中的installSource字段取值。使用该参数安装的应用,其安装来源installSource会被设置为指定的value值。参数生效条件:待安装应用必须未在设备上安装;当value指定为应用包名时,要求指定的应用必须已安装且为系统应用。从API version 23开始支持。</br> - "ohos.bms.param.deviceModeDistributionPolicy":value值为[DeviceModeDistributionPolicy](./js-apis-bundleManager-sys.md#devicemodedistributionpolicy)枚举值的十进制字符串(例如"4")。用于指定正在安装应用的设备模式分发策略。若未传入该键,则策略默认为UNSPECIFIED(0)。若值非法(不是十进制整数字符串或超出[0, 8]范围),则忽略该键,策略默认为UNSPECIFIED。从API版本26.0.0开始支持。|
1879## UninstallParam<sup>10+</sup>1879## UninstallParam<sup>10+</sup>
1880 1880 
1881共享包卸载需指定的参数信息。1881共享包卸载需指定的参数信息。