• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AutoFillExtensionContext (系统接口)
2
3AutoFillExtensionContext模块是AutoFillExtensionAbility的上下文环境,继承自[ExtensionContext](js-apis-inner-application-extensionContext.md)。
4
5> **说明:**
6>
7> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口仅可在Stage模型下使用。
9> 本模块接口为系统接口。
10
11## 使用说明
12
13在使用AutoFillExtensionContext的功能前,需要通过AutoFillExtensionAbility子类实例获取。
14
15```ts
16import { AutoFillExtensionAbility } from '@kit.AbilityKit';
17
18class MyAutoFillExtensionAbility extends AutoFillExtensionAbility {
19  onCreate() {
20    let AutoFillExtensionContext = this.context;
21  }
22}
23```
24
25## AutoFillExtensionContext.reloadInModal<sup>13+</sup>
26
27reloadInModal(customData: CustomData): Promise\<void>
28
29拉起模态页面。
30
31**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
32
33**参数:**
34
35| 参数名     | 类型                                                      | 必填 | 说明                         |
36| ---------- | --------------------------------------------------------- | ---- | ---------------------------- |
37| customData | [CustomData](js-apis-inner-application-customData-sys.md) | 是   | 拉起模态页面时的自定义信息。 |
38
39**返回值:**
40
41| 类型                | 说明                      |
42| ------------------- | ------------------------- |
43| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
44
45**错误码:**
46
47以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
48
49| 错误码ID | 错误信息                                                     |
50| -------- | ------------------------------------------------------------ |
51| 202      | Not System App. Interface caller is not a system app.        |
52| 401      | If the input parameter is not valid parameter.               |
53| 16000011 | The context does not exist.                                  |
54| 16000050 | Internal error.                                              |
55
56**示例:**
57
58通过点击账号密码输入框触发自动填充服务时,在[AutoFillExtensionAbility](js-apis-app-ability-autoFillExtensionAbility-sys.md)的onFillRequest生命周期中拉起账号选择界面。
59
60当点击账号选择界面选择任意账号时,调用reloadInModal接口再次触发自动填充服务时,在AutoFillExtensionAbility的onFillRequest生命周期中拉起模态页面。
61
62```ts
63// AutoFillAbility.ts
64import { AutoFillExtensionAbility, autoFillManager, UIExtensionContentSession } from '@kit.AbilityKit';
65import { hilog } from '@kit.PerformanceAnalysisKit';
66
67export default class AutoFillAbility extends AutoFillExtensionAbility {
68  // ...
69  onFillRequest(session: UIExtensionContentSession,
70                request: autoFillManager.FillRequest,
71                callback: autoFillManager.FillRequestCallback) {
72    hilog.info(0x0000, 'testTag', '%{public}s', 'autofill onFillRequest');
73    try {
74      let storage_fill: LocalStorage = new LocalStorage(
75        {
76          'session': session,
77          'message': "AutoFill Page",
78          'fillCallback': callback,
79          'viewData': request.viewData,
80          'autoFillExtensionContext': this.context,
81          'customData': request.customData
82        });
83      if (request.customData == undefined) {
84        // 加载自动填充处理界面
85        session.loadContent('pages/AccountPage', storage_fill);
86      } else {
87        // 拉起模态页面
88        session.loadContent('pages/ReloadInModal', storage_fill);
89      }
90    } catch (err) {
91      hilog.error(0x0000, 'testTag', '%{public}s', 'autofill failed to load content');
92    }
93  }
94}
95```
96
97当点击账号选择界面选择任意账号时,调用reloadInModal接口。
98
99```ts
100// AccountPage.ets
101import { autoFillManager, common } from '@kit.AbilityKit';
102import { BusinessError } from '@kit.BasicServicesKit';
103
104@Entry
105@Component
106struct AccountPage {
107  storage: LocalStorage | undefined = this.getUIContext().getSharedLocalStorage();
108  viewData: autoFillManager.ViewData | undefined = this.storage?.get<autoFillManager.ViewData>('viewData');
109  context: common.AutoFillExtensionContext | undefined = this.storage?.get<common.AutoFillExtensionContext>('autoFillExtensionContext');
110
111
112  build() {
113    Row() {
114      Column() {
115        List({ space: 10, initialIndex: 0 }) {
116          ListItem() {
117            Text('HelloWorld789456')
118              .width('100%')
119              .height(40)
120              .fontSize(16)
121              .textAlign(TextAlign.Center)
122              .borderRadius(5)
123          }
124          .onClick(() => {
125            if (this.viewData != undefined) {
126              if (this.context != undefined) {
127                this.context.reloadInModal({ data: { viewData: 20, text: 'HelloWorld789456' } }).then(() => {
128                  console.info('reloadInModal successfully.')
129                }).catch((err: BusinessError) => {
130                  console.error('reloadInModal failed.')
131                })
132              }
133            }
134          })
135        }
136        // ...
137      }
138      .width('100%')
139      .shadow(ShadowStyle.OUTER_FLOATING_SM)
140    }
141    .height('100%')
142    .shadow(ShadowStyle.OUTER_FLOATING_SM)
143  }
144}
145```
146