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<void> | 无返回结果的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