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