Android - Email InputField 不接受用户输入

Android - Email InputField is not taking user input

我有一个 WebView 加载远程网页 (this one),其 HTML 不受我控制。在那个页面上,有一个电子邮件字段是必需的,也许它有电子邮件验证。

当我点击该电子邮件字段以输入电子邮件地址时,Android 的键盘会出现,但当我开始输入时,它不会在其中输入任何内容。还有一些其他字段,它们也是必需的并且可能有验证,但它们可以很好地接受输入。只有电子邮件字段导致此问题。

该电子邮件字段在 Android Firefox 和 Google Chrome.

中工作正常

Javascript 在我的 WebView 上启用,但它什么也没做。有谁知道我怎样才能使该电子邮件字段接受输入?

您的键盘不支持 WebView 中的该字段。所以你需要强制WebView打开默认键盘。

您必须通过扩展 WebView class 来自定义 WebView。覆盖其 onCreateInputConnection() 方法:

import android.content.Context
import android.util.AttributeSet
import android.view.inputmethod.BaseInputConnection
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection
import android.webkit.WebView

class QWebView : WebView
{
    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, privateBrowsing: Boolean) : super(context, attrs, defStyleAttr, privateBrowsing)

    override fun onCreateInputConnection(outAttrs: EditorInfo?): InputConnection
    {
        return BaseInputConnection(this, false)
    }
}