1# @ohos.bundle.overlay (overlay模块) 2 3本模块提供[overlay特征应用](#overlay特征应用介绍)的安装,overlay特征应用的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息的查询以及overlay特征应用的禁用使能的能力。 4 5> **说明:** 6> 7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9## 导入模块 10 11``` ts 12import { overlay } from '@kit.AbilityKit'; 13``` 14 15## overlay.setOverlayEnabled 16 17setOverlayEnabled(moduleName:string, isEnabled: boolean): Promise\<void> 18 19以异步方法设置当前应用中overlay特征module的禁用使能状态。使用Promise异步回调。成功返回null,失败返回对应错误信息。 20 21**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 22 23**参数:** 24 25| 参数名 | 类型 | 必填 | 说明 | 26| ----------- | ------ | ---- | --------------------------------------- | 27| moduleName | string | 是 | overlay特征module的名称。 | 28| isEnabled | boolean | 是 | 值为true表示使能,值为false表示禁用。 | 29 30**返回值:** 31 32| 类型 | 说明 | 33| ------------------------- | ------------------ | 34| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 35 36**错误码:** 37 38以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 39 40| 错误码ID | 错误信息 | 41| ------ | -------------------------------------- | 42| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 43| 17700002 | The specified module name is not found. | 44| 17700033 | The specified module is not an overlay module. | 45 46**示例:** 47 48```ts 49import { overlay } from '@kit.AbilityKit'; 50import { BusinessError } from '@kit.BasicServicesKit'; 51 52let moduleName = "feature"; 53let isEnabled = false; 54 55try { 56 overlay.setOverlayEnabled(moduleName, isEnabled) 57 .then(() => { 58 console.info('setOverlayEnabled success'); 59 }).catch((err: BusinessError) => { 60 console.info('setOverlayEnabled failed due to err code: ' + err.code + ' ' + 'message:' + err.message); 61 }); 62} catch (err) { 63 let code = (err as BusinessError).code; 64 let message = (err as BusinessError).message; 65 console.info('setOverlayEnabled failed due to err code: ' + code + ' ' + 'message:' + message); 66} 67``` 68 69## overlay.setOverlayEnabled 70 71setOverlayEnabled(moduleName:string, isEnabled: boolean, callback: AsyncCallback\<void>): void 72 73以异步方法设置当前应用中overlay module的禁用使能状态。使用callback异步回调。成功返回null,失败返回对应错误信息。 74 75**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 76 77**参数:** 78 79| 参数名 | 类型 | 必填 | 说明 | 80| ----------- | ------ | ---- | --------------------------------------- | 81| moduleName | string | 是 | overlay特征module的名称。 | 82| isEnabled | boolean | 是 | 值为true表示使能,值为false表示禁用。| 83| callback | AsyncCallback\<void> | 是 | 回调函数,当设置指定module的overlay禁用使能状态成功时,err为null,否则为错误对象。 | 84 85**错误码:** 86 87以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 88 89| 错误码ID | 错误信息 | 90| ------ | -------------------------------------- | 91| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 92| 17700002 | The specified module name is not found. | 93| 17700033 | The specified module is not an overlay module. | 94 95**示例:** 96 97```ts 98import { overlay } from '@kit.AbilityKit'; 99import { BusinessError } from '@kit.BasicServicesKit'; 100 101let moduleName = "feature"; 102let isEnabled = false; 103 104try { 105 overlay.setOverlayEnabled(moduleName, isEnabled, (err, data) => { 106 if (err) { 107 console.info('setOverlayEnabled failed due to err code: ' + err.code + ' ' + 'message:' + err.message); 108 return; 109 } 110 console.info('setOverlayEnabled success'); 111 }); 112} catch (err) { 113 let code = (err as BusinessError).code; 114 let message = (err as BusinessError).message; 115 console.info('setOverlayEnabled failed due to err code: ' + code + ' ' + 'message:' + message); 116} 117``` 118 119## overlay.getOverlayModuleInfo 120 121getOverlayModuleInfo(moduleName: string): Promise\<OverlayModuleInfo> 122 123以异步方法获取当前应用中指定的module的overlayModuleInfo信息。使用promise异步回调,成功返回null,失败返回对应错误信息。 124 125**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 126 127**参数:** 128 129| 参数名 | 类型 | 必填 | 说明 | 130| ----------- | ------ | ---- | ------------------------------------------ | 131| moduleName | string | 是 | 指定当前应用中的overlay module的名称。 | 132 133**返回值:** 134 135| 类型 | 说明 | 136| ------------------------- | ------------------ | 137| Promise\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)> | Promise对象,返回[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)。| 138 139**错误码:** 140 141以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 142 143| 错误码ID | 错误信息 | 144| ------ | -------------------------------------- | 145| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 146| 17700002 | The specified module name is not found. | 147| 17700032 | The specified bundle does not contain any overlay module. | 148| 17700033 | The specified module is not an overlay module. | 149 150**示例:** 151 152```ts 153import { overlay } from '@kit.AbilityKit'; 154import { BusinessError } from '@kit.BasicServicesKit'; 155 156let moduleName = "feature"; 157 158(async () => { 159 try { 160 let overlayModuleInfo = await overlay.getOverlayModuleInfo(moduleName); 161 console.log('overlayModuleInfo is ' + JSON.stringify(overlayModuleInfo)); 162 } catch (err) { 163 let code = (err as BusinessError).code; 164 let message = (err as BusinessError).message; 165 console.log('getOverlayModuleInfo failed due to err code : ' + code + ' ' + 'message :' + message); 166 } 167})(); 168``` 169 170## overlay.getOverlayModuleInfo 171 172getOverlayModuleInfo(moduleName: string, callback: AsyncCallback\<OverlayModuleInfo>): void 173 174以异步方法获取当前应用中指定的module的overlayModuleInfo信息。使用callback异步回调,成功返回null,失败返回对应错误信息。 175 176**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 177 178**参数:** 179 180| 参数名 | 类型 | 必填 | 说明 | 181| ----------- | ------ | ---- | --------------------------------------- | 182| moduleName | string | 是 | 指定当前应用中的overlay特征module的名称。 | 183| callback | AsyncCallback\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)> | 是 | 回调函数,当获取当前应用中指定的module的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息成功时,err返回null。否则回调函数返回具体错误对象。 | 184 185**错误码:** 186 187以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 188 189| 错误码ID | 错误信息 | 190| ------ | -------------------------------------- | 191| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 192| 17700002 | The specified module name is not found. | 193| 17700032 | The specified bundle does not contain any overlay module. | 194| 17700033 | The specified module is not an overlay module. | 195 196**示例:** 197 198```ts 199import { overlay } from '@kit.AbilityKit'; 200import { BusinessError } from '@kit.BasicServicesKit'; 201 202let moduleName = "feature"; 203 204try { 205 overlay.getOverlayModuleInfo(moduleName, (err, data) => { 206 if (err) { 207 console.log('getOverlayModuleInfo failed due to err code : ' + err.code + ' ' + 'message :' + err.message); 208 return; 209 } 210 console.log('overlayModuleInfo is ' + JSON.stringify(data)); 211 }); 212} catch (err) { 213 let code = (err as BusinessError).code; 214 let message = (err as BusinessError).message; 215 console.log('getOverlayModuleInfo failed due to err code : ' + code + ' ' + 'message :' + message); 216} 217``` 218 219## overlay.getTargetOverlayModuleInfos 220 221getTargetOverlayModuleInfos(targetModuleName: string): Promise\<Array\<OverlayModuleInfo>> 222 223以异步方法获取指定的目标module的OverlayModuleInfo。使用promise异步回调,成功返回null,失败返回对应错误信息。 224 225**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 226 227**参数:** 228 229| 参数名 | 类型 | 必填 | 说明 | 230| ----------- | ------ | ---- | --------------------------------------- | 231| targetModuleName | string | 是 | 指定当前应用中的目标module的名称。 | 232 233**返回值:** 234 235| 类型 | 说明 | 236| ------------------------------------------------------------ | ------------------------------------------------------------ | 237| Promise\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | Promise对象,返回\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>>。 | 238 239**错误码:** 240 241以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 242 243| 错误码ID | 错误信息 | 244| ------ | -------------------------------------- | 245| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 246| 17700002 | The specified module name is not found. | 247| 17700034 | The specified module is an overlay module. | 248 249**示例:** 250 251```ts 252import { overlay } from '@kit.AbilityKit'; 253import { BusinessError } from '@kit.BasicServicesKit'; 254 255let targetModuleName = "feature"; 256 257(async () => { 258 try { 259 let overlayModuleInfos = await overlay.getTargetOverlayModuleInfos(targetModuleName); 260 console.log('overlayModuleInfos are ' + JSON.stringify(overlayModuleInfos)); 261 } catch (err) { 262 let code = (err as BusinessError).code; 263 let message = (err as BusinessError).message; 264 console.log('getTargetOverlayModuleInfos failed due to err code : ' + code + ' ' + 'message :' + message); 265 } 266})(); 267``` 268 269## overlay.getTargetOverlayModuleInfos 270 271getTargetOverlayModuleInfos(targetModuleName: string, callback: AsyncCallback\<Array\<OverlayModuleInfo>>): void 272 273以异步方法获取指定的目标module的OverlayModuleInfo。使用callback异步回调,成功返回null,失败返回对应错误信息。 274 275**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 276 277**参数:** 278 279| 参数名 | 类型 | 必填 | 说明 | 280| ----------- | ------ | ---- | --------------------------------------- | 281| targetModuleName | string | 是 | 指定当前应用中的目标module的名称。 | 282| callback | AsyncCallback\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | 是 | 回调函数,当获取指定的目标module的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)成功时,err返回null。否则回调函数返回具体错误对象。 | 283 284**错误码:** 285 286以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 287 288| 错误码ID | 错误信息 | 289| ------ | -------------------------------------- | 290| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 291| 17700002 | The specified module name is not found. | 292| 17700034 | The specified module is an overlay module. | 293 294**示例:** 295 296```ts 297import { overlay } from '@kit.AbilityKit'; 298import { BusinessError } from '@kit.BasicServicesKit'; 299 300let targetModuleName = "feature"; 301 302try { 303 overlay.getTargetOverlayModuleInfos(targetModuleName, (err, data) => { 304 if (err) { 305 console.log('getTargetOverlayModuleInfos failed due to err code : ' + err.code + ' ' + 'message :' + err.message); 306 return; 307 } 308 console.log('overlayModuleInfo is ' + JSON.stringify(data)); 309 }); 310} catch (err) { 311 let code = (err as BusinessError).code; 312 let message = (err as BusinessError).message; 313 console.log('getTargetOverlayModuleInfos failed due to err code : ' + code + ' ' + 'message :' + message); 314} 315``` 316 317## OverlayModuleInfo 318 319type OverlayModuleInfo = _OverlayModuleInfo.OverlayModuleInfo 320 321OverlayModuleInfo信息。 322 323**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 324 325| 类型 | 说明 | 326| ------------------------------------------------------------ | -------------- | 327| [_OverlayModuleInfo.OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md#overlaymoduleinfo-1) |OverlayModuleInfo信息。 | 328 329## overlay特征应用介绍 330 331**概念** 332overlay特征应用指的是应用中包含有overlay特征的module。该特征module一般是为设备上存在的非overlay特征的module提供额外的资源文件,以便于目标module在运行阶段可以使用这些额外的资源文件来展示不同的颜色,标签,主题等等。overlay特征仅适用于stage模型。 333 334**如何识别overlay特征的module** 335在DevEco Studio中创建应用工程时, module的配置文件module.json5中包含targetModuleName和targetPriority字段时,该module将会在安装阶段被识别为overlay特征的module。 336