Android 如何检测按下的自动填充?

问题描述

我使用 AutofillManager https://developer.android.com/reference/android/view/autofill/AutofillManager 并且无法理解我如何检测是用户自己输入值还是用户选择任何自动填充选项。 我尝试使用 model.add(Conv2D(filters=16,kernel_size=(3,3),kernel_initializer=init,padding='same',input_shape=(100,100,3))) 但它包含两种情况的价值

有人知道我该如何解决吗?请帮帮我!)

附言代码

我有请求自动填充的功能

model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["acc"])

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

editText.autofillValue

但是 fun allowAutoFill(view: View?) { if (view != null) { val afm = requireContext().getSystemService(AutofillManager::class.java) if (afm.isAutofillSupported && afm.isEnabled) { afm?.requestAutofill(view) } } } 包含值,如果用户输入内容并且用户选择自动填充选项

解决方法

我找不到很酷的答案,所以我使用了坏的肮脏的黑客。 我在屏幕上有两个编辑文本。如果用户选择任何自动填充选项,则此编辑文本会同时填充。因此,如果文本上的时差变化不大,我会将 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
               }
           }