Android自动填充框架:更新密码

r8uurelv  于 2023-02-17  发布在  Android
关注(0)|答案(2)|浏览(175)

我创建了一个应用程序,它有一个基本的登录/注册过程。当用户创建一个新帐户时,Android自动填充框架会要求保存用户名和密码。现在,一旦用户登录,就会有一个更改密码的选项,一个简单的屏幕会要求输入当前密码和新密码。我有没有办法强制Android自动填充框架更新密码?

nx7onnlm

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)
    }
}
lc8prwob

lc8prwob2#

这取决于密码保存的位置和指定的自动填充服务。要管理密码,您需要实现自己的自动填充服务。
This video can help.
And here is a sample code from google.

相关问题