1# 情景化自动填充能力 2 3### 介绍 4 5本示例使用[application/AutoFillRequest](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/application/AutoFillRequest.d.ts),[@ohos.app.ability.AutoFillExtensionAbility](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.AutoFillExtensionAbility.d.ts),[@ohos.app.ability.autoFillManager ](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.autoFillManager.d.ts)等接口,展示了情景化填充能力。具体而言实现了如下几点功能: 6 71.数据的自动保存; 82.数据的手动保存; 93.设置情景化类型数据的自动填充; 104.情景化类型为姓名时,输入字符进行联想自动填充。 11 12### 效果预览 13 14| 情景化填充页面 | 数据选择页面 | 数据联想 | 跳转页面 | 保存数据页面 | 15| ----------------------------------- | ------------------------------------------ | ------------------------------------------- | -------------------------------------------- | -------------------------------------- | 16| <img src="screenshots/Index.jpg" /> | <img src="screenshots/SelectorList.jpg" /> | <img src="screenshots/NameAssociation.jpg" /> | <img src="screenshots/ReturnMainPage.jpg" /> | <img src="screenshots/SavePage.jpg" /> | 17 18使用说明: 19 201.安装编译生成的hap包,点击Scenarioization图标即可进入应用。 21 222.进入应用显示保存/切换界面,点击页面中设置类型的输入框,页面弹出select弹窗,选择其中任意号码后,输入框中分别显示出刚选择其对应的号码。 23 243.点击页面中设置类型为姓名的输入框,输入字符进行联想页面弹出select弹窗,选择其中联想对应的名字后,输入框中显示出刚选择其对应的名字。 25 264.在保存/切换界面分别手动输入任意数据,点击"保存"按钮,自动触发OnSaveRequest回调,立即跳转新页面显示"取消/保存"按钮,点击"保存"按钮,页面回到"保存/切换界面"主页面。 27 285.在保存/切换界面分别手动输入任意数据,点击"切换界面"按钮,页面先跳转"返回主界面"页面,自动触发OnSaveRequest回调,立即跳转新页面显示"取消/保存"按钮,点击"保存",页面回到"返回主界面"页面。 29 30### 工程目录 31 32``` 33entry/src/main/ets/ 34|---autofillability 35| |---TextAutoFillAbility.ts // AutoFillExtensionAbility实现类 36|---autoFillPages 37| |---SelectorList.ets // 情景化填充界面页面 38| |---ReturnMainPage.ets // 跳转的页面 39| |---SavePage.ets // 保存页面 40|---entryability 41| |---EntryAbility.ts 42|---pages 43| |---index.ets // 主页面 44``` 45 46### 具体实现 47 48* 该示例分为四个分支: 49 1. FULL_PHONE_NUMBER类型的情景化自动填充。 50 51 * FULL_PHONE_NUMBER类型的TextInput控件获焦后拉起AutoFillExtensionAbility。 52 * 源码链接:[Index.ets](entry/src/main/ets/pages/Index.ets),[AutoFillAbility.ts](entry/src/main/ets/autofillability/TextAutoFillAbility.ts),[SelectorList.ets](entry/src/main/ets/autofillpages/SelectorList.ets) 53 * 参考接口:[@ohos.app.ability.UIExtensionContentSession](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.UIExtensionContentSession.d.ts),[@ohos.app.ability.autoFillManager](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.autoFillManager.d.ts) 54 55 2. PERSON_FULL_NAME类型的情景化自动填充。 56 57 * PERSON_FULL_NAME类型的TextInput控件获焦后拉起AutoFillExtensionAbility,输入字符进行联想页面弹出select弹窗并触发onUpdateRequest回调,将选择的名字返回到textInput组件。 58 * 源码链接:[Index.ets](entry/src/main/ets/pages/Index.ets),[AutoFillAbility.ts](entry/src/main/ets/autofillability/TextAutoFillAbility.ts),[SelectorList.ets](entry/src/main/ets/autofillpages/SelectorList.ets) 59 * 参考接口:[@ohos.app.ability.UIExtensionContentSession](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.UIExtensionContentSession.d.ts),[@ohos.app.ability.autoFillManager](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.autoFillManager.d.ts) 60 61 3. 自动保存能力。 62 63 * 当登录页面消失,发起自动保存请求,触发onSaveRequest生命周期。 64 * 源码链接:[Index.ets](entry/src/main/ets/pages/Index.ets),[AutoFillAbility.ts](entry/src/main/ets/autofillability/TextAutoFillAbility.ts),[ReturnMainPage.ets](entry/src/main/ets/autofillpages/ReturnMainPage.ets),[SavePage.ets](entry/src/main/ets/autofillpages/SavePage.ets) 65 * 参考接口:[@ohos.app.ability.UIExtensionContentSession](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.UIExtensionContentSession.d.ts),[@ohos.app.ability.autoFillManager](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.autoFillManager.d.ts) 66 67 4. 用户主动调用保存接口。 68 69 * 用户主动调用requestAutoSave接口保存账号密码。 70 * 源码链接:[SelectorList.ets](entry/src/main/ets/autofillpages/SelectorList.ets),[AutoFillAbility.ts](entry/src/main/ets/autofillability/TextAutoFillAbility.ts),[SavePage.ets](entry/src/main/ets/autofillpages/SavePage.ets) 71 * 参考接口:[@ohos.app.ability.UIExtensionContentSession](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.UIExtensionContentSession.d.ts),[@ohos.app.ability.autoFillManager](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.app.ability.autoFillManager.d.ts) 72 73### 相关权限 74 75不涉及。 76 77### 依赖 78 79不涉及。 80 81### 约束与限制 82 831.本示例仅支持标准系统上运行,支持设备:RK3568; 84 852.本示例为Stage模型,支持API12版本SDK,版本号:5.0.0.22; 86 873.本示例涉及使用系统接口:AutoFillExtensionAbility.onFillRequest,AutoFillExtensionAbility.onSaveRequest,autoFillManager.requestAutoSave,需要手动替换Full SDK才能编译通过; 88 894.本示例需要使用DevEco Studio 4.1.3 Release(Build Version: 4.1.3.500, built on January 20, 2024)才可编译运行; 90 915.本示例涉及权限至少为system_basic级别; 92 936.本示例的bundleName只能是"com.ohos.textautofill"不可修改。 94 95### 下载 96 97如需单独下载本工程,执行如下命令: 98 99``` 100git init 101git config core.sparsecheckout true 102echo code/SystemFeature/AutoFill/AutoFillScenarioization/ > .git/info/sparse-checkout 103git remote add origin https://gitee.com/openharmony/applications_app_samples.git 104git pull origin master 105``` 106 107