1

我使用 AutofillManager https://developer.android.com/reference/android/view/autofill/AutofillManager并且无法理解如何检测用户自己输入值还是用户选择任何自动填充选项。我尝试使用editText.autofillValue,但它在两种情况下都包含价值

任何人都知道我该如何解决它?请帮帮我!)

PS代码

我有请求自动填充的功能

fun allowAutoFill(view: View?) {
        if (view != null) {
            val afm = requireContext().getSystemService(AutofillManager::class.java)
            if (afm.isAutofillSupported && afm.isEnabled) {
                afm?.requestAutofill(view)
            }
        }
    }

之后我想知道用户输入一些东西或从自动填充中选择值。分析需要它。

private fun isAutoFillApplied() = binding?.editPassword?.autofillValue?.textValue?.isNotEmpty() == true

binding?.editPassword?.autofillValue如果用户输入某些内容并且用户选择自动填充选项,则包含值

4

1 回答 1

0

我找不到很酷的答案,所以我使用了糟糕的肮脏技巧。我在屏幕上有两个edittext。如果用户选择任何自动填充选项,则此编辑文本会同时填充。因此,如果文本上的时间差变化不大,我将isAutofill值填充为true. 这真的不是很好的解决方案,但我找不到另一个。

这看起来像这样

var lastChangedTime = 0L
var isAutoFill = false
var lastRepeatPassword: String? = null

editPassword.addTextChangedListener { text ->
                lastChangedTime = System.currentTimeMillis()
}

editRepeatPassword.addTextChangedListener { text ->
               if (text.toString() != lastRepeatPassword) {
                   lastRepeatPassword = text.toString()
                   isAutoFill = (System.currentTimeMillis() - lastChangedTime) < 50
               }
           }
于 2021-02-12T09:07:29.730 回答