当前位置: 首页 > article >正文

android EditText密码自动填充适配

android上的密码(其实不仅仅是密码,可以是用户名也可以是邮箱)自动填充,是需要考虑适配的。
官方文档:https://developer.android.com/identity/autofill/autofill-optimize?hl=zh-cn

什么是自动填充

手机厂商一般会默认带一个。三星叫做pass,iqoo叫做密码保险箱,小米叫做智能密码管理。
在这里插入图片描述
第三方的有,google框架,lastPass,bitwarden等。
在这里插入图片描述
以上是自动填充服务
然后,就是需要我们app做的事情,适配自动填充。
在这里插入图片描述

适配

说起来,很简单。
只需要申明

android:autofillHints="password" 
android:importantForAutofill="yes" 

但是发现这个事情,我们什么都不用做,默认就能支持的手机有pixel,小米等。但三星或者三方服务如lastpass可能存在一些问题。

其实官网上并没有说明有一种情况。坑就坑在,必须要有email或username框:
必须要有Email框存在,才会被某些服务识别到密码框!
因此, 你必须要有另外一个用户名的输入框比如:

android:autofillHints="emailAddress"  //username
android:importantForAutofill="yes" 

才能生效。

而且某些界面,比如你只存在一个输入密码的框,那么它将不能被弹出密码选择器。
需要你隐藏一个邮箱输入框才能有效。
比如:

 //不能是gone
   <include
        android:id="@+id/hiddenEmail"
        layout="@layout/input_email_layout"
        android:visibility="invisible" 
        android:layout_width="match_parent"
        android:layout_height="32dp"/>

反之,某些不想提示的:

android:importantForAutofill="no" 
代码调用

给出2个函数:

/**
 * 在onCreate过程,添加代码。可以让它支持autoFill
 * @param autoFillHints 可以选如下:
 *     View.AUTOFILL_HINT_PASSWORD
 *     View.AUTOFILL_HINT_EMAIL_ADDRESS
 *     newPassword
 */
fun EditText.makeAutoFill(autoFillHints:String) {
    setAutofillHints(autoFillHints)
    importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES
    importantForAccessibility = View.IMPORTANT_FOR_AUTOFILL_YES
}


//在onCreate过程,添加代码。可以让它不支持autoFill
fun EditText.makeNoAutoFill() {
    importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO
    importantForAccessibility = View.IMPORTANT_FOR_AUTOFILL_NO
}

http://www.kler.cn/a/447032.html

相关文章:

  • uniapp Native.js 调用安卓arr原生service
  • iOS + watchOS Tourism App(含源码可简单复现)
  • web实验三
  • datasets 笔记:加载数据集(基本操作)
  • 使用 datamodel-code-generator 从 MySQL 生成 Python 模型
  • RabbitMQ 路由(Routing)通讯方式详解
  • Ubuntu24.04 安装 visual studio code
  • Redis常见阻塞原因总结
  • 医疗挂号系统的智慧进化:SSM 与 Vue 联合设计与实现
  • MacOS下PostIn安装配置指南
  • 基于 HC_SR04的超声波测距数码管显示(智能小车超声波避障部分)
  • 机器学习之KNN算法
  • 如何去设计一个消息队列
  • Vue Web开发(十)
  • Git版本控制工具--基础命令和分支管理
  • 【蓝桥杯】43688-《Excel地址问题》
  • 人工智能ACA(四)--机器学习基础
  • 通信技术以及5G和AI保障电网安全与网络安全
  • Godot RPG 游戏开发指南
  • 2024年华为OD机试真题-寻找链表的中间节点-Python-OD统一考试(E卷)
  • SqlSugar查询达梦数据库遇到的异常情况(续)
  • Python使用GitLab API来获取文件内容
  • VMware安装Ubuntu 16.04以及安装好后初步使用配置!
  • 【容器】k8s学习笔记原理详解(十万字超详细)
  • 【论文笔记】结合:“integrate“ 和 “combine“等
  • 在 DDD 中优雅的发送 Kafka 消息