1e41f4b71Sopenharmony_ci# @ohos.app.ability.dialogRequest (dialogRequest模块)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_cidialogRequest模块用于处理模态弹框的能力,包括获取RequestInfo(用于绑定模态弹框)、获取RequestCallback(用于设置结果)。
4e41f4b71Sopenharmony_ci模态弹框是指一个系统弹出框,其特点在于:该弹出框会拦截弹框之下的页面的鼠标、键盘、触屏等事件,销毁该弹框,才能操作下面的页面。
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci> **说明:**
7e41f4b71Sopenharmony_ci>
8e41f4b71Sopenharmony_ci>  - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
9e41f4b71Sopenharmony_ci>  - 本模块接口可以在ServiceExtensionAbility下使用,如果ServiceExtensionAbility实现了模态弹框,则可以使用本模块的接口获取请求方的RequestInfo、RequestCallback并返回请求结果。
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci## 导入模块
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci```ts
14e41f4b71Sopenharmony_ciimport { dialogRequest } from '@kit.AbilityKit';
15e41f4b71Sopenharmony_ci```
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci## dialogRequest.getRequestInfo
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_cigetRequestInfo(want: Want): RequestInfo
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci> **说明:**
22e41f4b71Sopenharmony_ci>
23e41f4b71Sopenharmony_ci>  该接口可以在ServiceExtensionAbility下使用,如果ServiceExtensionAbility实现了模态弹框,则能从Want中获取请求方的RequestInfo。其他场景使用该接口,均无法获取返回值。
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci从Want中获取请求方的RequestInfo。
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci**参数:**
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                        |
32e41f4b71Sopenharmony_ci| ---- | ------ | ---- | --------------------------- |
33e41f4b71Sopenharmony_ci| want  | [Want](js-apis-app-ability-want.md) | 是   | 表示发起方请求弹框时传入的want信息。 |
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci**返回值:**
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci| 类型   | 说明                     |
38e41f4b71Sopenharmony_ci| ------ | ------------------------ |
39e41f4b71Sopenharmony_ci| [RequestInfo](#requestinfo) | 请求方RequestInfo,用于绑定模态窗口。 |
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci**错误码**:
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 |
46e41f4b71Sopenharmony_ci| ------- | -------- |
47e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci**示例:**
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci```ts
52e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, dialogRequest } from '@kit.AbilityKit';
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
55e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
56e41f4b71Sopenharmony_ci    try {
57e41f4b71Sopenharmony_ci      let requestInfo = dialogRequest.getRequestInfo(want);
58e41f4b71Sopenharmony_ci    } catch (err) {
59e41f4b71Sopenharmony_ci      console.error(`getRequestInfo err= ${JSON.stringify(err)}`);
60e41f4b71Sopenharmony_ci    }
61e41f4b71Sopenharmony_ci  }
62e41f4b71Sopenharmony_ci}
63e41f4b71Sopenharmony_ci```
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci## dialogRequest.getRequestCallback
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_cigetRequestCallback(want: Want): RequestCallback
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci从Want中获取请求方的RequestCallback。
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci> **说明:**
72e41f4b71Sopenharmony_ci>
73e41f4b71Sopenharmony_ci>  该接口可以在ServiceExtensionAbility下使用,如果ServiceExtensionAbility实现了模态弹框,则能从Want中获取请求方的RequestCallback。其他场景使用该接口,均无法获取返回值。
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci**参数:**
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                        |
80e41f4b71Sopenharmony_ci| ---- | ------ | ---- | --------------------------- |
81e41f4b71Sopenharmony_ci| want  | [Want](js-apis-app-ability-want.md) | 是   | 表示发起方请求弹框时传入的want信息。 |
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci**返回值:**
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci| 类型   | 说明                     |
86e41f4b71Sopenharmony_ci| ------ | ------------------------ |
87e41f4b71Sopenharmony_ci| [RequestCallback](#requestcallback) | 请求方RequestCallback,用于设置返回结果。 |
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci**错误码**:
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 |
94e41f4b71Sopenharmony_ci| ------- | -------- |
95e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci**示例:**
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci```ts
100e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, dialogRequest } from '@kit.AbilityKit';
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
103e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
104e41f4b71Sopenharmony_ci    try {
105e41f4b71Sopenharmony_ci      let requestCallback = dialogRequest.getRequestCallback(want);
106e41f4b71Sopenharmony_ci    } catch(err) {
107e41f4b71Sopenharmony_ci      console.error(`getRequestInfo err= ${JSON.stringify(err)}`);
108e41f4b71Sopenharmony_ci    }
109e41f4b71Sopenharmony_ci  }
110e41f4b71Sopenharmony_ci}
111e41f4b71Sopenharmony_ci```
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci## WindowRect<sup>10+</sup>
114e41f4b71Sopenharmony_ci
115e41f4b71Sopenharmony_ci表示模态弹框的属性。
116e41f4b71Sopenharmony_ci
117e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在Stage模型下使用。
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
120e41f4b71Sopenharmony_ci
121e41f4b71Sopenharmony_ci| 名称 | 类型   | 必填 | 说明                        |
122e41f4b71Sopenharmony_ci| ---- | ------ | ---- | --------------------------- |
123e41f4b71Sopenharmony_ci| left  | number | 是   | 弹框边框的左上角的X坐标。 |
124e41f4b71Sopenharmony_ci| top  | number | 是   | 弹框边框的左上角的Y坐标。 |
125e41f4b71Sopenharmony_ci| width  | number | 是   | 弹框的宽度。 |
126e41f4b71Sopenharmony_ci| height  | number | 是   | 弹框的高度。 |
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci## RequestInfo
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci表示发起方请求信息,作为窗口绑定模态弹框的入参。
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在Stage模型下使用。
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci| 名称      | 类型       | 必填   | 说明     |
137e41f4b71Sopenharmony_ci| ------------ | ------------------| ------ | ---------------------- |
138e41f4b71Sopenharmony_ci| windowRect<sup>10+</sup>            | [WindowRect](#windowrect10)    | 否   | 表示模态弹框的位置属性。          |
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci**示例:**
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci```ts
143e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, dialogRequest } from '@kit.AbilityKit';
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
146e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
147e41f4b71Sopenharmony_ci    try {
148e41f4b71Sopenharmony_ci      let requestInfo = dialogRequest.getRequestInfo(want);
149e41f4b71Sopenharmony_ci      console.info(`getRequestInfo windowRect=, ${JSON.stringify(requestInfo.windowRect)}` );
150e41f4b71Sopenharmony_ci    } catch(err) {
151e41f4b71Sopenharmony_ci      console.error(`getRequestInfo err= ${JSON.stringify(err)}`);
152e41f4b71Sopenharmony_ci    }
153e41f4b71Sopenharmony_ci  }
154e41f4b71Sopenharmony_ci}
155e41f4b71Sopenharmony_ci```
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci## ResultCode
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci模态弹框请求结果码。
160e41f4b71Sopenharmony_ci
161e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ci| 名称      | 值          | 说明     |
164e41f4b71Sopenharmony_ci| ------------ | ------------------ | ---------------------- |
165e41f4b71Sopenharmony_ci| RESULT_OK            | 0          | 表示成功。          |
166e41f4b71Sopenharmony_ci| RESULT_CANCEL        | 1          | 表示失败。          |
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ci## RequestResult
169e41f4b71Sopenharmony_ci模态弹框请求结果,包含结果码ResultCode和请求结果ResultWant。
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci### 属性
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在Stage模型下使用。
174e41f4b71Sopenharmony_ci
175e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 |
178e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | -------- |
179e41f4b71Sopenharmony_ci| result | [ResultCode](#resultcode) | 否 | 否 | 表示结果码。 |
180e41f4b71Sopenharmony_ci| want<sup>10+</sup> | [Want](js-apis-app-ability-want.md)  | 否 | 是 | 表示Want类型信息,如ability名称,包名等。 |
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci## RequestCallback
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci用于设置模态弹框请求结果的callback接口。
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在Stage模型下使用。
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci### RequestCallback.setRequestResult
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_cisetRequestResult(result: RequestResult): void
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ci设置请求结果
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在Stage模型下使用。
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ci**参数:**
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
201e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
202e41f4b71Sopenharmony_ci| result | [RequestResult](#requestresult) | 是 | 模态弹框请求结果信息。 |
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci**错误码**:
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 |
209e41f4b71Sopenharmony_ci| ------- | -------- |
210e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**示例:**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci```ts
215e41f4b71Sopenharmony_ciimport { AbilityConstant, UIAbility, Want, dialogRequest } from '@kit.AbilityKit';
216e41f4b71Sopenharmony_ci
217e41f4b71Sopenharmony_ciexport default class EntryAbility extends UIAbility {
218e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
219e41f4b71Sopenharmony_ci    try {
220e41f4b71Sopenharmony_ci      let requestCallback = dialogRequest.getRequestCallback(want);
221e41f4b71Sopenharmony_ci      let myResult: dialogRequest.RequestResult = {
222e41f4b71Sopenharmony_ci        result : dialogRequest.ResultCode.RESULT_CANCEL,
223e41f4b71Sopenharmony_ci      };
224e41f4b71Sopenharmony_ci      requestCallback.setRequestResult(myResult);
225e41f4b71Sopenharmony_ci    } catch(err) {
226e41f4b71Sopenharmony_ci      console.error(`getRequestInfo err= ${JSON.stringify(err)}`);
227e41f4b71Sopenharmony_ci    }
228e41f4b71Sopenharmony_ci  }
229e41f4b71Sopenharmony_ci}
230e41f4b71Sopenharmony_ci```