• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AutoFillRequest (系统接口)
2
3当AutoFillExtensionAbility触发回调函数时,提供给开发者的页面数据和回调接口。
4
5> **说明:**
6>
7> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口均为系统接口。
9> 本模块接口仅可在Stage模型下使用。
10
11## 导入模块
12
13```ts
14import { autoFillManager } from '@kit.AbilityKit';
15```
16
17## FillRequest
18
19自动填充信息。
20
21**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
22
23| 名称        | 类型                 | 必填 | 说明                                                         |
24| ----------- | -------------------- | ---- | ------------------------------------------------------------ |
25| type        | [AutoFillType](js-apis-inner-application-autoFillType-sys.md)       | 是   | 自动填充类型。          |
26| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | 是   | 页面数据。              |
27| isPopup<sup>12+</sup>    | boolean               | 是   | 自动填充服务是否拉起popup窗口。<br>true:当前拉起popup窗口。<br>false:当前拉起模态窗。              |
28
29## SaveRequest
30
31自动保存请求信息。
32
33**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
34
35| 名称        | 类型                 | 必填 | 说明                                                         |
36| ----------- | -------------------- | ---- | ------------------------------------------------------------ |
37| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | 是   | 页面数据。              |
38
39## UpdateRequest<sup>12+</sup>
40
41自动填充更新信息。
42
43**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
44
45| 名称        | 类型                 | 必填 | 说明                                                         |
46| ----------- | -------------------- | ---- | ------------------------------------------------------------ |
47| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | 是   | 页面数据。              |
48
49## FillResponse
50
51自动填充响应。
52
53**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
54
55| 名称        | 类型                 | 必填 | 说明                                                         |
56| ----------- | -------------------- | ---- | ------------------------------------------------------------ |
57| viewData    | [ViewData](js-apis-inner-application-viewData-sys.md)               | 是   | 页面数据。              |
58
59## FillRequestCallback
60
61自动填充或者生成密码时的回调对象,可以通过此回调通知客户端成功或者失败。
62
63### FillRequestCallback.onSuccess
64
65onSuccess(response: FillResponse): void
66
67通知自动填充请求已成功完成。
68
69**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
70
71**参数:**
72
73| 参数名 | 类型 | 必填 | 说明 |
74| -------- | -------- | -------- | ------------------------------ |
75| response | [FillResponse](../apis/#fillresponse)  | 是 | 自动填充响应信息。 |
76
77**错误码:**
78
79以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
80
81| 错误码ID | 错误信息 |
82| ------- | -------------------------------- |
83| 401  | Parameter error. Possible causes: Mandatory parameters are left unspecified. |
84| 16000050 | Internal error. |
85
86**示例:**
87
88```ts
89// MyAutoFillExtensionAbility.ts
90import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
91import { hilog } from '@kit.PerformanceAnalysisKit';
92
93class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
94  onFillRequest(session: UIExtensionContentSession,
95                request: autoFillManager.FillRequest,
96                callback: autoFillManager.FillRequestCallback) {
97    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
98    try {
99      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
100        'fillCallback': callback,
101        'message': 'AutoFill Page',
102        'viewData': request.viewData,
103      }
104      let storage_fill = new LocalStorage(storageData);
105      if (session) {
106        session.loadContent('pages/AutoFillPage', storage_fill);
107      } else {
108        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
109      }
110    } catch (err) {
111      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
112    }
113  }
114}
115```
116
117```ts
118// AutoFillPage.ets
119import { autoFillManager } from '@kit.AbilityKit';
120import { BusinessError } from '@kit.BasicServicesKit';
121import { hilog } from '@kit.PerformanceAnalysisKit';
122
123let storage: LocalStorage = LocalStorage.getShared();
124let fillCallback: autoFillManager.FillRequestCallback | undefined =
125  storage.get<autoFillManager.FillRequestCallback>('fillCallback');
126let viewData: autoFillManager.ViewData | undefined = storage.get<autoFillManager.ViewData>('viewData');
127
128@Entry
129@Component
130struct AutoFillPage {
131  build() {
132    Row() {
133      Column() {
134        Text('AutoFill Page')
135          .fontSize(50)
136          .fontWeight(FontWeight.Bold)
137      }
138
139      Button('onSuccess')
140        .onClick(() => {
141          if (viewData) {
142            viewData.pageNodeInfos[0].value = 'user1';
143            viewData.pageNodeInfos[1].value = 'user1 password';
144            viewData.pageNodeInfos[2].value = 'user1 generate new password';
145            hilog.info(0x0000, 'testTag', 'autofill success with viewData: %{public}s', JSON.stringify(viewData));
146            try {
147              fillCallback?.onSuccess({ viewData: viewData });
148            } catch (error) {
149              console.error(`catch error, code: ${(error as BusinessError).code},
150                  message: ${(error as BusinessError).message}`);
151            }
152          }
153        })
154        .width('100%')
155    }
156    .height('100%')
157  }
158}
159```
160
161### FillRequestCallback.onFailure
162
163onFailure(): void
164
165通知自动填充请求已失败。
166
167**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
168
169**错误码:**
170
171| 错误码ID | 错误信息 |
172| ------- | -------------------------------- |
173| 16000050 | Internal error. |
174
175**示例:**
176
177```ts
178// MyAutoFillExtensionAbility.ts
179import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
180import { hilog } from '@kit.PerformanceAnalysisKit';
181
182class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
183  onFillRequest(session: UIExtensionContentSession,
184                request: autoFillManager.FillRequest,
185                callback: autoFillManager.FillRequestCallback) {
186    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
187    try {
188      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
189        'fillCallback': callback,
190        'message': 'AutoFill Page',
191        'viewData': request.viewData,
192      }
193      let storage_fill = new LocalStorage(storageData);
194      if (session) {
195        session.loadContent('pages/AutoFill Page', storage_fill);
196      } else {
197        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
198      }
199    } catch (err) {
200      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
201    }
202  }
203}
204```
205
206```ts
207// AutoFillPage.ets
208import { autoFillManager } from '@kit.AbilityKit';
209import { BusinessError } from '@kit.BasicServicesKit';
210import { hilog } from '@kit.PerformanceAnalysisKit';
211
212let storage: LocalStorage = LocalStorage.getShared();
213let fillCallback: autoFillManager.FillRequestCallback | undefined =
214  storage.get<autoFillManager.FillRequestCallback>('fillCallback');
215
216@Entry
217@Component
218struct AutoFillPage {
219  build() {
220    Row() {
221      Column() {
222        Text('AutoFill Page')
223          .fontSize(50)
224          .fontWeight(FontWeight.Bold)
225      }
226
227      Button('onFailure')
228        .onClick(() => {
229          hilog.info(0x0000, 'testTag', 'autofill failure');
230          try {
231            fillCallback?.onFailure();
232          } catch (error) {
233            console.error(`catch error, code: ${(error as BusinessError).code},
234              message: ${(error as BusinessError).message}`);
235          }
236        })
237        .width('100%')
238    }
239    .height('100%')
240  }
241}
242```
243
244### FillRequestCallback.onCancel
245
246onCancel(fillContent?: string): void
247
248通知自动填充已被取消。
249
250**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
251
252**参数:**
253
254| 参数名                    | 类型   | 必填 | 说明                 |
255| ------------------------- | ------ | ---- | -------------------- |
256| fillContent<sup>12+</sup> | string | 否   | 表示通知自动填充取消后,返回给输入法框架的填充内容。 |
257
258**错误码:**
259
260以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
261
262| 错误码ID | 错误信息 |
263| ------- | -------------------------------- |
264| 401  | Parameter error. Possible causes: 1. The input parameter is not valid parameter;2. Mandatory parameters are left unspecified. |
265| 16000050 | Internal error. |
266
267**示例:**
268
269```ts
270// MyAutoFillExtensionAbility.ts
271import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
272import { hilog } from '@kit.PerformanceAnalysisKit';
273
274class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
275  onFillRequest(session: UIExtensionContentSession,
276                request: autoFillManager.FillRequest,
277                callback: autoFillManager.FillRequestCallback) {
278    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
279    try {
280      let storageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData> = {
281        'fillCallback': callback,
282        'message': 'AutoFill Page',
283        'viewData': request.viewData,
284      }
285      let storage_fill = new LocalStorage(storageData);
286      if (session) {
287        session.loadContent('pages/AutoFillPage', storage_fill);
288      } else {
289        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
290      }
291    } catch (err) {
292      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
293    }
294  }
295}
296```
297
298```ts
299// AutoFillPage.ets
300import { autoFillManager } from '@kit.AbilityKit';
301import { BusinessError } from '@kit.BasicServicesKit';
302import { hilog } from '@kit.PerformanceAnalysisKit';
303
304let storage: LocalStorage = LocalStorage.getShared();
305let fillCallback: autoFillManager.FillRequestCallback | undefined =
306  storage.get<autoFillManager.FillRequestCallback>('fillCallback');
307
308@Entry
309@Component
310struct AutoFillPage {
311  build() {
312    Row() {
313      Column() {
314        Text('Hello World')
315          .fontSize(50)
316          .fontWeight(FontWeight.Bold)
317      }
318
319      Button('onCancel')
320        .onClick(() => {
321          hilog.info(0x0000, 'testTag', 'autofill cancel');
322          try {
323            fillCallback?.onCancel();
324          } catch (error) {
325            console.error(`catch error, code: ${(error as BusinessError).code},
326                message: ${(error as BusinessError).message}`);
327          }
328        })
329        .width('100%')
330    }
331    .height('100%')
332  }
333}
334```
335
336### FillRequestCallback.setAutoFillPopupConfig
337
338setAutoFillPopupConfig(autoFillPopupConfig: AutoFillPopupConfig ): void
339
340动态调整气泡弹窗的尺寸和位置。
341
342**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
343
344**参数:**
345
346| 参数名 | 类型 | 必填 | 说明 |
347| -------- | -------- | -------- | ------------------------------ |
348| autoFillPopupConfig | [AutoFillPopupConfig](js-apis-inner-application-autoFillPopupConfig-sys.md) | 是 | 气泡弹窗尺寸和位置信息。 |
349
350**错误码:**
351
352以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
353
354| 错误码ID | 错误信息 |
355| ------- | -------------------------------- |
356| 401  | Parameter error. Possible causes: Mandatory parameters are left unspecified. |
357| 202  | Permission verification failed. Possible causes: non-system app called system api. |
358| 16000050 | Internal error. |
359
360**示例:**
361
362```ts
363// MyAutoFillExtensionAbility.ts
364import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
365import { hilog } from '@kit.PerformanceAnalysisKit';
366
367export default class AutoFillAbility extends AutoFillExtensionAbility {
368  onCreate(): void {
369    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onCreate');
370  }
371
372  onDestroy(): void {
373    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onDestroy');
374  }
375
376  onSessionDestroy(session: UIExtensionContentSession) {
377    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onSessionDestroy');
378    hilog.info(0x0000, 'testTag', 'session content: %{public}s', JSON.stringify(session));
379  }
380
381  onForeground(): void {
382    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onForeground');
383  }
384
385  onBackground(): void {
386    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onBackground');
387  }
388
389  onUpdateRequest(request: autoFillManager.UpdateRequest): void {
390    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onUpdateRequest');
391    console.log(`get fill request viewData: ${JSON.stringify(request.viewData)}.`);
392    let storage = LocalStorage.getShared();
393    let fillCallback = storage.get<autoFillManager.FillRequestCallback>('fillCallback');
394
395    if (fillCallback) {
396      try {
397        hilog.info(0x0000, 'testTag', 'pageNodeInfos.value: ' + JSON.stringify(request.viewData.pageNodeInfos[0].value));
398        fillCallback.setAutoFillPopupConfig({
399          popupSize: {
400            width: 400 + request.viewData.pageNodeInfos[0].value.length * 10,
401            height: 200 + request.viewData.pageNodeInfos[0].value.length * 10
402          },
403          placement: autoFillManager.PopupPlacement.TOP
404        });
405      } catch (err) {
406        hilog.info(0x0000, 'testTag', 'autoFillPopupConfig err: ' + err.code);
407      }
408    }
409  }
410
411  onFillRequest(session: UIExtensionContentSession, request: autoFillManager.FillRequest, callback: autoFillManager.FillRequestCallback) {
412    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
413    hilog.info(0x0000, 'testTag', 'Fill RequestCallback: %{public}s ', JSON.stringify(callback));
414    console.log(`testTag. Get fill request viewData: ${JSON.stringify(request.viewData)}.`);
415    console.log(`testTag. Get fill request type: ${JSON.stringify(request.type)}.`);
416
417    try {
418      let localStorageData: Record<string, string | autoFillManager.FillRequestCallback | autoFillManager.ViewData | autoFillManager.AutoFillType> = {
419        'message': 'AutoFill Page',
420        'fillCallback': callback,
421        'viewData': request.viewData,
422        'autoFillType': request.type
423      }
424      let storage_fill = new LocalStorage(localStorageData);
425      console.info(`testTag. Session: ${JSON.stringify(session)}.`);
426      let size: autoFillManager.PopupSize = {
427        width: 400,
428        height: 200
429      };
430      callback.setAutoFillPopupConfig({
431        popupSize: size
432      });
433      session.loadContent('pages/SelectorList', storage_fill);
434    } catch (err) {
435      hilog.error(0x0000, 'testTag', '%{public}s', 'autofill failed to load content: ' + JSON.stringify(err));
436    }
437  }
438
439  onSaveRequest(session: UIExtensionContentSession, request: autoFillManager.SaveRequest, callback: autoFillManager.SaveRequestCallback) {
440    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onSaveRequest');
441    try {
442      let localStorageData: Record<string, string | autoFillManager.SaveRequestCallback> = {
443        'message': 'AutoFill Page',
444        'saveCallback': callback
445      };
446      let storage_save = new LocalStorage(localStorageData);
447      if (session) {
448        session.loadContent('pages/SavePage', storage_save);
449      } else {
450        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
451      }
452    } catch (err) {
453      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
454    }
455  }
456}
457```
458
459## SaveRequestCallback
460
461自动保存或者手动保存请求回调。
462
463### SaveRequestCallback.onSuccess
464
465onSuccess(): void
466
467通知保存请求已成功处理。
468
469**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
470
471**错误码:**
472
473以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
474
475| 错误码ID | 错误信息 |
476| ------- | -------------------------------- |
477| 16000050 | Internal error. |
478
479**示例:**
480
481```ts
482// MyAutoFillExtensionAbility.ts
483import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
484import { hilog } from '@kit.PerformanceAnalysisKit';
485class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
486  onSaveRequest(session: UIExtensionContentSession,
487                request: autoFillManager.SaveRequest,
488                callback: autoFillManager.SaveRequestCallback) {
489    hilog.info(0x0000, 'testTag', '%{public}s', 'onSaveRequest');
490    try {
491      let storageData: Record<string, string | autoFillManager.SaveRequestCallback | autoFillManager.ViewData> = {
492        'message': 'AutoFill Page',
493        'saveCallback': callback,
494        'viewData': request.viewData
495      };
496      let storage_save = new LocalStorage(storageData);
497      if (session) {
498        session.loadContent('pages/SavePage', storage_save);
499      } else {
500        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
501      }
502    } catch (err) {
503      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
504    }
505  }
506}
507```
508
509```ts
510// SavePage.ets
511import { autoFillManager } from '@kit.AbilityKit';
512import { BusinessError } from '@kit.BasicServicesKit';
513import { hilog } from '@kit.PerformanceAnalysisKit';
514
515let storage: LocalStorage = LocalStorage.getShared();
516let saveCallback: autoFillManager.SaveRequestCallback | undefined =
517  storage.get<autoFillManager.SaveRequestCallback>('saveCallback');
518
519@Entry
520@Component
521struct SavePage {
522  build() {
523    Row() {
524      Column() {
525        Text('SavePage')
526          .fontSize(50)
527          .fontWeight(FontWeight.Bold)
528      }
529
530      Button('onSuccess')
531        .onClick(() => {
532          hilog.info(0x0000, 'testTag', 'autosave success');
533          try {
534            saveCallback?.onSuccess();
535          } catch (error) {
536            console.error(`catch error, code: ${(error as BusinessError).code},
537                message: ${(error as BusinessError).message}`);
538          }
539        })
540        .width('100%')
541    }
542    .height('100%')
543  }
544}
545```
546
547### SaveRequestCallback.onFailure
548
549onFailure(): void
550
551通知保存请求处理失败。
552
553**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
554
555**错误码:**
556
557以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
558
559| 错误码ID | 错误信息 |
560| ------- | -------------------------------- |
561| 16000050 | Internal error. |
562
563**示例:**
564
565```ts
566// MyAutoFillExtensionAbility.ts
567import { AutoFillExtensionAbility, UIExtensionContentSession, autoFillManager } from '@kit.AbilityKit';
568import { hilog } from '@kit.PerformanceAnalysisKit';
569
570class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
571  onSaveRequest(session: UIExtensionContentSession,
572                request: autoFillManager.SaveRequest,
573                callback: autoFillManager.SaveRequestCallback) {
574    hilog.info(0x0000, 'testTag', '%{public}s', 'onSaveRequest');
575    try {
576      let storageData: Record<string, string | autoFillManager.SaveRequestCallback | autoFillManager.ViewData> = {
577        'message': 'AutoFill Page',
578        'saveCallback': callback,
579        'viewData': request.viewData
580      }
581      let storage_save = new LocalStorage(storageData);
582      if (session) {
583        session.loadContent('pages/SavePage', storage_save);
584      } else {
585        hilog.error(0x0000, 'testTag', '%{public}s', 'session is null');
586      }
587    } catch (err) {
588      hilog.error(0x0000, 'testTag', '%{public}s', 'failed to load content');
589    }
590  }
591}
592```
593
594```ts
595// SavePage.ets
596import { autoFillManager } from '@kit.AbilityKit';
597import { BusinessError } from '@kit.BasicServicesKit';
598import { hilog } from '@kit.PerformanceAnalysisKit';
599
600let storage: LocalStorage = LocalStorage.getShared();
601let saveCallback: autoFillManager.SaveRequestCallback | undefined =
602  storage.get<autoFillManager.SaveRequestCallback>('saveCallback');
603
604@Entry
605@Component
606struct SavePage {
607  build() {
608    Row() {
609      Column() {
610        Text('Save Page')
611          .fontSize(50)
612          .fontWeight(FontWeight.Bold)
613      }
614
615      Button('onFailure')
616        .onClick(() => {
617          hilog.info(0x0000, 'testTag', 'autofill failure');
618          try {
619            saveCallback?.onFailure();
620          } catch (error) {
621            console.error(`catch error, code: ${(error as BusinessError).code},
622              message: ${(error as BusinessError).message}`);
623          }
624        })
625        .width('100%')
626    }
627    .height('100%')
628  }
629}
630```
631