1# @ohos.bundle.overlay (overlay模块)(系统接口) 2 3本模块提供[overlay特征应用](js-apis-overlay.md#overlay特征应用介绍)的安装,overlay特征应用的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息的查询以及overlay特征应用的禁用使能的能力。 4 5> **说明:** 6> 7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> 当前页面仅包含本模块的系统接口,其他公开接口参见[`@ohos.bundle.overlay`](js-apis-overlay.md)。 10 11## 导入模块 12 13``` ts 14import { overlay } from '@kit.AbilityKit'; 15``` 16 17## overlay.setOverlayEnabledByBundleName 18 19setOverlayEnabledByBundleName(bundleName:string, moduleName:string, isEnabled: boolean): Promise\<void> 20 21以异步方法设置指定应用的overlay module的禁用使能状态。使用Promise异步回调,成功返回应用的处置状态,失败返回对应错误信息。 22 23**需要权限:** ohos.permission.CHANGE_OVERLAY_ENABLED_STATE 24 25**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 26 27**系统接口:** 此接口为系统接口。 28 29**参数:** 30 31| 参数名 | 类型 | 必填 | 说明 | 32| ----------- | ------ | ---- | --------------------------------------- | 33| bundleName | string | 是 | 指定应用的bundle名称。 | 34| moduleName | string | 是 | 指定应用的overlay module的名称。 | 35| isEnabled | boolean | 是 | 值为true表示使能,值为false表示禁用。 | 36 37**返回值:** 38 39| 类型 | 说明 | 40| ------------------------- | ------------------ | 41| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 42 43**错误码:** 44 45以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 46 47| 错误码ID | 错误信息 | 48| ------ | -------------------------------------- | 49| 201 | Permission denied. | 50| 202 | Permission denied, non-system app called system api. | 51| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 52| 17700001 | The specified bundleName is not found. | 53| 17700002 | The specified module name is not found. | 54| 17700032 | The specified bundle does not contain any overlay module. | 55| 17700033 | The specified module is not an overlay module. | 56 57**示例:** 58 59```ts 60import { overlay } from '@kit.AbilityKit'; 61import { BusinessError } from '@kit.BasicServicesKit'; 62let bundleName = "com.example.myapplication_xxxxx"; 63let moduleName = "feature"; 64let isEnabled = false; 65 66try { 67 overlay.setOverlayEnabledByBundleName(bundleName, moduleName, isEnabled) 68 .then((data) => { 69 console.info('setOverlayEnabledByBundleName successfully'); 70 }).catch((err: BusinessError) => { 71 console.info('setOverlayEnabledByBundleName failed due to err code: ' + err.code + ' ' + 'message:' + err.message); 72 }); 73} catch (err) { 74 let code = (err as BusinessError).code; 75 let message = (err as BusinessError).message; 76 console.info('setOverlayEnabledByBundleName failed due to err code: ' + code + ' ' + 'message:' + message); 77} 78``` 79 80## overlay.setOverlayEnabledByBundleName 81 82setOverlayEnabledByBundleName(bundleName:string, moduleName:string, isEnabled: boolean, callback: AsyncCallback\<void>): void 83 84以异步方法设置指定应用的overlay module的禁用使能状态。使用callback异步回调,成功返回应用的处置状态,失败返回对应错误信息。 85 86**需要权限:** ohos.permission.CHANGE_OVERLAY_ENABLED_STATE 87 88**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 89 90**系统接口:** 此接口为系统接口。 91 92**参数:** 93 94| 参数名 | 类型 | 必填 | 说明 | 95| ----------- | ------ | ---- | --------------------------------------- | 96| bundleName | string | 是 | 指定应用的bundle名称。 | 97| moduleName | string | 是 | 指定应用的overlay特征module的名称。 | 98| isEnabled | boolean | 是 | 值为true表示使能,值为false表示禁用。 | 99| callback | AsyncCallback\<void> | 是 | 回调函数。当设置指定应用的overlay module的禁用使能状态成功时,err为null,否则为错误对象。 | 100 101**错误码:** 102 103以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 104 105| 错误码ID | 错误信息 | 106| ------ | -------------------------------------- | 107| 201 | Permission denied. | 108| 202 | Permission denied, non-system app called system api. | 109| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 110| 17700001 | The specified bundleName is not found. | 111| 17700002 | The specified module name is not found. | 112| 17700032 | The specified bundle does not contain any overlay module. | 113| 17700033 | The specified module is not an overlay module. | 114 115**示例:** 116 117```ts 118import { overlay } from '@kit.AbilityKit'; 119import { BusinessError } from '@kit.BasicServicesKit'; 120let bundleName = "com.example.myapplication_xxxxx"; 121let moduleName = "feature"; 122let isEnabled = false; 123 124try { 125 overlay.setOverlayEnabledByBundleName(bundleName, moduleName, isEnabled, (err, data) => { 126 if (err) { 127 console.info('setOverlayEnabledByBundleName failed due to err code: ' + err.code + ' ' + 'message:' + err.message); 128 return; 129 } 130 console.info('setOverlayEnabledByBundleName successfully'); 131 }); 132} catch (err) { 133 let code = (err as BusinessError).code; 134 let message = (err as BusinessError).message; 135 console.info('setOverlayEnabledByBundleName failed due to err code: ' + code + ' ' + 'message:' + message); 136} 137``` 138 139## overlay.getOverlayModuleInfoByBundleName 140 141getOverlayModuleInfoByBundleName(bundleName: string, moduleName?: string): Promise\<Array\<OverlayModuleInfo>> 142 143以异步方法获取指定应用中指定module的OverlayModuleInfo信息。使用promise异步回调,成功返回null,失败返回对应错误信息。 144 145**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 146 147**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 148 149**系统接口:** 此接口为系统接口。 150 151**参数:** 152 153| 参数名 | 类型 | 必填 | 说明 | 154| ----------- | ------ | ---- | --------------------------------------- | 155| bundleName | string | 是 | 指定应用的bundle名称。 | 156| moduleName | string | 否 | 指定应用中的overlay module的名称。默认值:缺省该字段时,查询接口将查询指定应用中所有module的OverlayModuleInfo信息。 | 157 158**返回值:** 159 160| 类型 | 说明 | 161| ------------------------------------------------------------ | ------------------------------------------------------------ | 162| Promise\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | Promise对象,返回\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>>。 | 163 164**错误码:** 165 166以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 167 168| 错误码ID | 错误信息 | 169| ------ | -------------------------------------- | 170| 201 | Permission denied. | 171| 202 | Permission denied, non-system app called system api. | 172| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 173| 17700001 | The specified bundleName is not found. | 174| 17700002 | The specified module name is not found. | 175| 17700032 | The specified bundle does not contain any overlay module. | 176| 17700033 | The specified module is not an overlay module. | 177 178**示例:** 179 180```ts 181import { overlay } from '@kit.AbilityKit'; 182import { BusinessError } from '@kit.BasicServicesKit'; 183let bundleName = "com.example.myapplication_xxxxx"; 184let moduleName = "feature"; 185 186(async() => { 187 try { 188 let overlayModuleInfos = await overlay.getOverlayModuleInfoByBundleName(bundleName, moduleName); 189 console.log('overlayModuleInfos are ' + JSON.stringify(overlayModuleInfos)); 190 } catch(err) { 191 let code = (err as BusinessError).code; 192 let message = (err as BusinessError).message; 193 console.log('getTargetOverlayModuleInfos failed due to err code : ' + code + ' ' + 'message :' + message); 194 } 195})(); 196``` 197 198## overlay.getOverlayModuleInfoByBundleName 199 200getOverlayModuleInfoByBundleName(bundleName: string, moduleName: string, callback: AsyncCallback\<Array\<OverlayModuleInfo>>): void 201 202以异步方法获取指定应用中指定module的OverlayModuleInfo信息。使用callback异步回调,成功返回null,失败返回对应错误信息。 203 204**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 205 206**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 207 208**系统接口:** 此接口为系统接口。 209 210**参数:** 211 212| 参数名 | 类型 | 必填 | 说明 | 213| ----------- | ------ | ---- | --------------------------------------- | 214| bundleName | string | 是 | 指定应用的bundle名称。 | 215| moduleName | string | 是 | 指定应用中的overlay module的名称。缺省该字段时,查询接口将查询指定应用中所有module的OverlayModuleInfo信息。 | 216| callback | AsyncCallback\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | 是 | 回调函数,当获取指定应用中指定module的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息成功时,err返回null。否则回调函数返回具体错误对象。 | 217 218**错误码:** 219 220以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 221 222| 错误码ID | 错误信息 | 223| ------ | -------------------------------------- | 224| 201 | Permission denied. | 225| 202 | Permission denied, non-system app called system api. | 226| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 227| 17700001 | The specified bundleName is not found. | 228| 17700002 | The specified module name is not found. | 229| 17700032 | The specified bundle does not contain any overlay module. | 230| 17700033 | The specified module is not an overlay module. | 231 232**示例:** 233 234```ts 235import { overlay } from '@kit.AbilityKit'; 236import { BusinessError } from '@kit.BasicServicesKit'; 237let bundleName = "com.example.myapplication_xxxxx"; 238let moduleName = "feature"; 239 240try { 241 overlay.getOverlayModuleInfoByBundleName(bundleName, moduleName, (err, data) => { 242 if (err) { 243 console.log('getOverlayModuleInfoByBundleName failed due to err code : ' + err.code + ' ' + 'message :' + err.message); 244 return; 245 } 246 console.log('overlayModuleInfo is ' + JSON.stringify(data)); 247 }); 248} catch (err) { 249 let code = (err as BusinessError).code; 250 let message = (err as BusinessError).message; 251 console.log('getOverlayModuleInfoByBundleName failed due to err code : ' + code + ' ' + 'message :' + message); 252} 253``` 254 255## overlay.getOverlayModuleInfoByBundleName 256 257getOverlayModuleInfoByBundleName(bundleName: string, callback: AsyncCallback\<Array\<OverlayModuleInfo>>): void 258 259以异步方法获取指定应用中所有module的OverlayModuleInfo信息。使用callback异步回调,成功返回null,失败返回对应错误信息。 260 261**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 262 263**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 264 265**系统接口:** 此接口为系统接口。 266 267**参数:** 268 269| 参数名 | 类型 | 必填 | 说明 | 270| ----------- | ------ | ---- | --------------------------------------- | 271| bundleName | string | 是 | 指定应用的bundle名称。 | 272| callback | AsyncCallback\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | 是 | 回调函数,当获取指定应用中所有module的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息成功时,err返回null。否则回调函数返回具体错误对象。 | 273 274**错误码:** 275 276以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 277 278| 错误码ID | 错误信息 | 279| ------ | -------------------------------------- | 280| 201 | Permission denied. | 281| 202 | Permission denied, non-system app called system api. | 282| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 283| 17700001 | The specified bundleName is not found. | 284| 17700032 | The specified bundle does not contain any overlay module. | 285 286**示例:** 287 288```ts 289import { overlay } from '@kit.AbilityKit'; 290import { BusinessError } from '@kit.BasicServicesKit'; 291let bundleName = "com.example.myapplication_xxxxx"; 292 293try { 294 overlay.getOverlayModuleInfoByBundleName(bundleName, (err, data) => { 295 if (err) { 296 console.log('getOverlayModuleInfoByBundleName failed due to err code : ' + err.code + ' ' + 'message :' + err.message); 297 return; 298 } 299 console.log('overlayModuleInfo is ' + JSON.stringify(data)); 300 }); 301} catch (err) { 302 let code = (err as BusinessError).code; 303 let message = (err as BusinessError).message; 304 console.log('getOverlayModuleInfoByBundleName failed due to err code : ' + code + ' ' + 'message :' + message); 305} 306``` 307 308## overlay.getTargetOverlayModuleInfosByBundleName 309 310getTargetOverlayModuleInfosByBundleName(targetBundleName: string, moduleName?: string): Promise\<Array\<OverlayModuleInfo>> 311 312以异步方法获取指定应用中指定module关联的所有OverlayModuleInfo信息。使用promise异步回调,成功返回null,失败返回对应错误信息。 313 314**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 315 316**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 317 318**系统接口:** 此接口为系统接口。 319 320**参数:** 321 322| 参数名 | 类型 | 必填 | 说明 | 323| ----------- | ------ | ---- | --------------------------------------- | 324| targetBundleName | string | 是 | 指定目标应用的bundle名称。 | 325| moduleName | string | 否 | 指定应用中的目标module的名称。默认值:缺省该字段时,查询接口将查询指定应用中所有module所关联的OverlayModuleInfo信息。 | 326 327**返回值:** 328 329| 类型 | 说明 | 330| ------------------------- | ------------------ | 331| Promise\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | Promise对象,返回\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>>。 | 332 333**错误码:** 334 335以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 336 337| 错误码ID | 错误信息 | 338| ------ | -------------------------------------- | 339| 201 | Permission denied. | 340| 202 | Permission denied, non-system app called system api. | 341| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 342| 17700001 | The specified bundleName is not found. | 343| 17700002 | The specified module name is not found. | 344| 17700034 | The specified module is an overlay module. | 345| 17700035 | The specified bundle is an overlay bundle. | 346 347**示例:** 348 349```ts 350import { overlay } from '@kit.AbilityKit'; 351import { BusinessError } from '@kit.BasicServicesKit'; 352let targetBundleName = "com.example.myapplication_xxxxx"; 353let moduleName = "feature"; 354 355(async() => { 356 try { 357 let overlayModuleInfos = await overlay.getTargetOverlayModuleInfosByBundleName(targetBundleName, moduleName); 358 console.log('overlayModuleInfos are ' + JSON.stringify(overlayModuleInfos)); 359 } catch(err) { 360 let code = (err as BusinessError).code; 361 let message = (err as BusinessError).message; 362 console.log('getTargetOverlayModuleInfosByBundleName failed due to err code : ' + code + ' ' + 'message :' + message); 363 } 364})(); 365``` 366 367## overlay.getTargetOverlayModuleInfosByBundleName 368 369getTargetOverlayModuleInfosByBundleName(targetBundleName: string, moduleName: string, callback: AsyncCallback<Array<OverlayModuleInfo>>): void 370 371以异步方法获取指定应用中指定module关联的所有OverlayModuleInfo信息。使用callback异步回调,成功返回null,失败返回对应错误信息。 372 373**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 374 375**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 376 377**系统接口:** 此接口为系统接口。 378 379**参数:** 380 381| 参数名 | 类型 | 必填 | 说明 | 382| ----------- | ------ | ---- | --------------------------------------- | 383| targetBundleName | string | 是 | 指定目标应用的bundle名称。 | 384| moduleName | string | 是 | 指定应用中的目标module的名称。缺省该字段时,查询接口将查询指定应用中所有module所关联的OverlayModuleInfo信息。 | 385| callback | AsyncCallback\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | 是 | 回调函数,当获取指定应用中指定module关联的所有[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息成功时,err返回null。否则回调函数返回具体错误对象。 | 386 387**错误码:** 388 389以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 390 391| 错误码ID | 错误信息 | 392| ------ | -------------------------------------- | 393| 201 | Permission denied. | 394| 202 | Permission denied, non-system app called system api. | 395| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 396| 17700001 | The specified bundleName is not found. | 397| 17700002 | The specified module name is not found. | 398| 17700034 | The specified module is an overlay module. | 399| 17700035 | The specified bundle is an overlay bundle. | 400 401**示例:** 402 403```ts 404import { overlay } from '@kit.AbilityKit'; 405import { BusinessError } from '@kit.BasicServicesKit'; 406let targetBundleName = "com.example.myapplication_xxxxx"; 407let moduleName = "feature"; 408 409try { 410 overlay.getTargetOverlayModuleInfosByBundleName(targetBundleName, moduleName, (err, data) => { 411 if (err) { 412 console.log('getTargetOverlayModuleInfosByBundleName failed due to err code : ' + err.code + ' ' + 'message :' + err.message); 413 return; 414 } 415 console.log('overlayModuleInfo is ' + JSON.stringify(data)); 416 }); 417} catch (err) { 418 let code = (err as BusinessError).code; 419 let message = (err as BusinessError).message; 420 console.log('getTargetOverlayModuleInfosByBundleName failed due to err code : ' + code + ' ' + 'message :' + message); 421} 422``` 423 424## overlay.getTargetOverlayModuleInfosByBundleName 425 426getTargetOverlayModuleInfosByBundleName(targetBundleName: string, callback: AsyncCallback<Array<OverlayModuleInfo>>): void 427 428以异步方法获取指定应用中所有module关联的所有OverlayModuleInfo信息。使用callback异步回调,成功返回null,失败返回对应错误信息。 429 430**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 431 432**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay 433 434**系统接口:** 此接口为系统接口。 435 436**参数:** 437 438| 参数名 | 类型 | 必填 | 说明 | 439| ----------- | ------ | ---- | --------------------------------------- | 440| targetBundleName | string | 是 | 指定目标应用的bundle名称。 | 441| callback | AsyncCallback\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | 是 | 回调函数,当获取指定应用中所有module关联的所有[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息成功时,err返回null。否则回调函数返回具体错误对象。 | 442 443**错误码:** 444 445以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.bundle错误码](errorcode-bundle.md)。 446 447| 错误码ID | 错误信息 | 448| ------ | -------------------------------------- | 449| 201 | Permission denied. | 450| 202 | Permission denied, non-system app called system api. | 451| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 452| 17700001 | The specified bundleName is not found. | 453| 17700035 | The specified bundle is an overlay bundle. | 454 455**示例:** 456 457```ts 458import { overlay } from '@kit.AbilityKit'; 459import { BusinessError } from '@kit.BasicServicesKit'; 460let targetBundleName = "com.example.myapplication_xxxxx"; 461 462try { 463 overlay.getTargetOverlayModuleInfosByBundleName(targetBundleName, (err, data) => { 464 if (err) { 465 console.log('getTargetOverlayModuleInfosByBundleName failed due to err code : ' + err.code + ' ' + 'message :' + err.message); 466 return; 467 } 468 console.log('overlayModuleInfo is ' + JSON.stringify(data)); 469 }); 470} catch (err) { 471 let code = (err as BusinessError).code; 472 let message = (err as BusinessError).message; 473 console.log('getTargetOverlayModuleInfosByBundleName failed due to err code : ' + code + ' ' + 'message :' + message); 474} 475```