• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 '@ohos.bundle.overlay';
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以下错误码的详细介绍请参见[ohos.bundle错误码](errorcode-bundle.md)。
39
40| 错误码ID | 错误信息                                |
41| ------ | -------------------------------------- |
42| 17700002 | The specified module name is not found. |
43| 17700033 | The specified module is not an overlay module. |
44
45**示例:**
46
47```ts
48import overlay from '@ohos.bundle.overlay';
49import { BusinessError } from '@ohos.base';
50let moduleName = "feature";
51let isEnabled = false;
52
53try {
54    overlay.setOverlayEnabled(moduleName, isEnabled)
55        .then(() => {
56            console.info('setOverlayEnabled success');
57        }).catch((err: BusinessError) => {
58            console.info('setOverlayEnabled failed due to err code: ' + err.code + ' ' + 'message:' + err.message);
59        });
60} catch (err) {
61    let code = (err as BusinessError).code;
62    let message = (err as BusinessError).message;
63    console.info('setOverlayEnabled failed due to err code: ' + code + ' ' + 'message:' + message);
64}
65```
66
67## overlay.setOverlayEnabled
68
69setOverlayEnabled(moduleName:string, isEnabled: boolean, callback: AsyncCallback\<void>): void
70
71以异步方法设置当前应用中overlay module的禁用使能状态。使用callback异步回调。成功返回null,失败返回对应错误信息。
72
73**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay
74
75**参数:**
76
77| 参数名       | 类型     | 必填   | 说明                                    |
78| ----------- | ------ | ---- | --------------------------------------- |
79| moduleName  | string | 是    | overlay特征module的名称。               |
80| isEnabled   | boolean  | 是  | 值为true表示使能,值为false表示禁用。|
81| callback    | AsyncCallback\<void> | 是    | 回调函数,当设置指定module的overlay禁用使能状态成功时,err为null,否则为错误对象。 |
82
83**错误码:**
84
85以下错误码的详细介绍请参见[ohos.bundle错误码](errorcode-bundle.md)。
86
87| 错误码ID | 错误信息                                |
88| ------ | -------------------------------------- |
89| 17700002 | The specified module name is not found. |
90| 17700033 | The specified module is not an overlay module. |
91
92**示例:**
93
94```ts
95import overlay from '@ohos.bundle.overlay';
96import { BusinessError } from '@ohos.base';
97let moduleName = "feature";
98let isEnabled = false;
99
100try {
101    overlay.setOverlayEnabled(moduleName, isEnabled, (err, data) => {
102        if (err) {
103            console.info('setOverlayEnabled failed due to err code: ' + err.code + ' ' + 'message:' + err.message);
104            return;
105        }
106        console.info('setOverlayEnabled success');
107    });
108} catch (err) {
109    let code = (err as BusinessError).code;
110    let message = (err as BusinessError).message;
111    console.info('setOverlayEnabled failed due to err code: ' + code + ' ' + 'message:' + message);
112}
113```
114
115## overlay.getOverlayModuleInfo
116
117getOverlayModuleInfo(moduleName: string): Promise\<OverlayModuleInfo>
118
119以异步方法获取当前应用中指定的module的overlayModuleInfo信息。使用promise异步回调,成功返回null,失败返回对应错误信息。
120
121**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay
122
123**参数:**
124
125| 参数名       | 类型     | 必填   | 说明                                    |
126| ----------- | ------ | ---- | ------------------------------------------ |
127| moduleName | string | 是    | 指定当前应用中的overlay module的名称。     |
128
129**返回值:**
130
131| 类型                        | 说明                 |
132| ------------------------- | ------------------ |
133| Promise\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)> | Promise对象,返回[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)。|
134
135**错误码:**
136
137以下错误码的详细介绍请参见[ohos.bundle错误码](errorcode-bundle.md)。
138
139| 错误码ID | 错误信息                                |
140| ------ | -------------------------------------- |
141| 17700002 | The specified module name is not found. |
142| 17700032 | The specified bundle does not contain any overlay module. |
143| 17700033 | The specified module is not an overlay module. |
144
145**示例:**
146
147```ts
148import overlay from '@ohos.bundle.overlay';
149import { BusinessError } from '@ohos.base';
150let moduleName = "feature";
151
152(async() => {
153    try {
154        let overlayModuleInfo = await overlay.getOverlayModuleInfo(moduleName);
155        console.log('overlayModuleInfo is ' + JSON.stringify(overlayModuleInfo));
156    } catch(err) {
157        let code = (err as BusinessError).code;
158        let message = (err as BusinessError).message;
159        console.log('getOverlayModuleInfo failed due to err code : ' + code + ' ' + 'message :' + message);
160    }
161})();
162```
163
164## overlay.getOverlayModuleInfo
165
166getOverlayModuleInfo(moduleName: string, callback: AsyncCallback\<OverlayModuleInfo>): void
167
168以异步方法获取当前应用中指定的module的overlayModuleInfo信息。使用callback异步回调,成功返回null,失败返回对应错误信息。
169
170**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay
171
172**参数:**
173
174| 参数名       | 类型     | 必填   | 说明                                    |
175| ----------- | ------ | ---- | --------------------------------------- |
176| moduleName | string | 是    | 指定当前应用中的overlay特征module的名称。     |
177| callback    | AsyncCallback\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)> | 是    | 回调函数,当获取当前应用中指定的module的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)信息成功时,err返回null。否则回调函数返回具体错误对象。                   |
178
179**错误码:**
180
181以下错误码的详细介绍请参见[ohos.bundle错误码](errorcode-bundle.md)。
182
183| 错误码ID | 错误信息                                |
184| ------ | -------------------------------------- |
185| 17700002 | The specified module name is not found. |
186| 17700032 | The specified bundle does not contain any overlay module. |
187| 17700033 | The specified module is not an overlay module. |
188
189**示例:**
190
191```ts
192import overlay from '@ohos.bundle.overlay';
193import { BusinessError } from '@ohos.base';
194let moduleName = "feature";
195try {
196    overlay.getOverlayModuleInfo(moduleName, (err, data) => {
197        if (err) {
198            console.log('getOverlayModuleInfo failed due to err code : ' + err.code + ' ' + 'message :' + err.message);
199            return;
200        }
201        console.log('overlayModuleInfo is ' + JSON.stringify(data));
202    });
203} catch (err) {
204    let code = (err as BusinessError).code;
205    let message = (err as BusinessError).message;
206    console.log('getOverlayModuleInfo failed due to err code : ' + code + ' ' + 'message :' + message);
207}
208```
209
210## overlay.getTargetOverlayModuleInfos
211
212getTargetOverlayModuleInfos(targetModuleName: string): Promise\<Array\<OverlayModuleInfo>>
213
214以异步方法获取指定的目标module的OverlayModuleInfo。使用promise异步回调,成功返回null,失败返回对应错误信息。
215
216**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay
217
218**参数:**
219
220| 参数名       | 类型     | 必填   | 说明                                    |
221| ----------- | ------ | ---- | --------------------------------------- |
222| targetModuleName | string | 是    | 指定当前应用中的目标module的名称。     |
223
224**返回值:**
225
226| 类型                                                         | 说明                                                         |
227| ------------------------------------------------------------ | ------------------------------------------------------------ |
228| Promise\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | Promise对象,返回\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>>。 |
229
230**错误码:**
231
232以下错误码的详细介绍请参见[ohos.bundle错误码](errorcode-bundle.md)。
233
234| 错误码ID | 错误信息                                |
235| ------ | -------------------------------------- |
236| 17700002 | The specified module name is not found. |
237| 17700034 | The specified module is an overlay module. |
238
239**示例:**
240
241```ts
242import overlay from '@ohos.bundle.overlay';
243import { BusinessError } from '@ohos.base';
244let targetModuleName = "feature";
245
246(async() => {
247    try {
248        let overlayModuleInfos = await overlay.getTargetOverlayModuleInfos(targetModuleName);
249        console.log('overlayModuleInfos are ' + JSON.stringify(overlayModuleInfos));
250    } catch(err) {
251        let code = (err as BusinessError).code;
252        let message = (err as BusinessError).message;
253        console.log('getTargetOverlayModuleInfos failed due to err code : ' + code + ' ' + 'message :' + message);
254    }
255})();
256```
257
258## overlay.getTargetOverlayModuleInfos
259
260getTargetOverlayModuleInfos(targetModuleName: string, callback: AsyncCallback\<Array\<OverlayModuleInfo>>): void
261
262以异步方法获取指定的目标module的OverlayModuleInfo。使用callback异步回调,成功返回null,失败返回对应错误信息。
263
264**系统能力:** SystemCapability.BundleManager.BundleFramework.Overlay
265
266**参数:**
267
268| 参数名       | 类型     | 必填   | 说明                                    |
269| ----------- | ------ | ---- | --------------------------------------- |
270| targetModuleName | string | 是    | 指定当前应用中的目标module的名称。     |
271| callback    | AsyncCallback\<Array\<[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)>> | 是    | 回调函数,当获取指定的目标module的[OverlayModuleInfo](js-apis-bundleManager-overlayModuleInfo.md)成功时,err返回null。否则回调函数返回具体错误对象。  |
272
273**错误码:**
274
275以下错误码的详细介绍请参见[ohos.bundle错误码](errorcode-bundle.md)。
276
277| 错误码ID | 错误信息                                |
278| ------ | -------------------------------------- |
279| 17700002 | The specified module name is not found.  |
280| 17700034 | The specified module is an overlay module. |
281
282**示例:**
283
284```ts
285import overlay from '@ohos.bundle.overlay';
286import { BusinessError } from '@ohos.base';
287let targetModuleName = "feature";
288try {
289    overlay.getTargetOverlayModuleInfos(targetModuleName, (err, data) => {
290        if (err) {
291            console.log('getTargetOverlayModuleInfos failed due to err code : ' + err.code + ' ' + 'message :' + err.message);
292            return;
293        }
294        console.log('overlayModuleInfo is ' + JSON.stringify(data));
295    });
296} catch (err) {
297    let code = (err as BusinessError).code;
298    let message = (err as BusinessError).message;
299    console.log('getTargetOverlayModuleInfos failed due to err code : ' + code + ' ' + 'message :' + message);
300}
301```
302
303## overlay特征应用介绍
304
305**概念**
306overlay特征应用指的是应用中包含有overlay特征的module。该特征module一般是为设备上存在的非overlay特征的module提供额外的资源文件,以便于目标module在运行阶段可以使用这些额外的资源文件来展示不同的颜色,标签,主题等等。overlay特征仅适用于stage模型。
307
308**如何识别overlay特征的module**
309在IDE中创建应用工程时, module的配置文件module.json5中包含targetModuleName和targetPriority字段时,该module将会在安装阶段被识别为overlay特征的module。
310