我创建了一个应用程序,它有一个基本的登录/注册过程。当用户创建一个新帐户时,Android自动填充框架会要求保存用户名和密码。现在,一旦用户登录,就会有一个更改密码的选项,一个简单的屏幕会要求输入当前密码和新密码。我有没有办法强制Android自动填充框架更新密码?
nx7onnlm1#
自动填充管理器需要有关用户名的信息。不幸的是,自动填充过程中忽略了不可见或禁用的EditText。诀窍是添加带有用户名提示的自定义不可见字段。您的新密码也应带有密码提示。示例:
<com.example.myapplication.InvisibleField android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:autofillHints="username" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Password" android:autofillHints="password" />
class InvisibleField @JvmOverloads constructor(context: Context, attrs: AttributeSet?, defStyleRes: Int = 0) : View(context, attrs, defStyleRes) { private var value: AutofillValue? = null override fun autofill(value: AutofillValue?) { super.autofill(value) this.value = value } override fun getAutofillType(): Int { return AUTOFILL_TYPE_TEXT } override fun getAutofillValue(): AutofillValue? { return value } @RequiresApi(Build.VERSION_CODES.O) fun setValue(username: String?) { value = AutofillValue.forText(username) } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) // IMPORTANT! Non-zero size is required setMeasuredDimension(1, 1) } }
lc8prwob2#
这取决于密码保存的位置和指定的自动填充服务。要管理密码,您需要实现自己的自动填充服务。This video can help.And here is a sample code from google.
2条答案
按热度按时间nx7onnlm1#
自动填充管理器需要有关用户名的信息。不幸的是,自动填充过程中忽略了不可见或禁用的EditText。诀窍是添加带有用户名提示的自定义不可见字段。您的新密码也应带有密码提示。
示例:
lc8prwob2#
这取决于密码保存的位置和指定的自动填充服务。要管理密码,您需要实现自己的自动填充服务。
This video can help.
And here is a sample code from google.