Android 如何区分onCreateInputConnection中的输入和WebView中的输入?

Android 如何区分onCreateInputConnection中的输入和WebView中的输入?,android,webview,Android,Webview,我有一个我的应用程序的摘录,它加载了一个HTML——我没有任何更改权限——有三个输入:电子邮件、密码和网络视图上的验证代码。最后一个永远是数字。我只想显示最后一个输入元素的数字键盘。我通过扩展WebView类并重写此方法来实现这一点,如下所示: @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { BaseInputConnection ic = new Ba

我有一个我的应用程序的摘录,它加载了一个HTML——我没有任何更改权限——有三个输入:电子邮件、密码和网络视图上的验证代码。最后一个永远是数字。我只想显示最后一个输入元素的数字键盘。我通过扩展WebView类并重写此方法来实现这一点,如下所示:

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        BaseInputConnection ic = new BaseInputConnection(this, true);
        outAttrs.inputType = InputType.TYPE_CLASS_NUMBER; // Tells the keyboard to show the number pad
        return ic;
    } 

问题是,我不知道我可以检查哪个标志来区分HTML上的三种不同输入,所以我只能为validation code输入元素运行此代码。有什么想法吗?

在javascript中捕获before focus事件,存储即将获得焦点的字段id,然后在onCreateInputConnection中使用该值来决定要显示的键盘类型

如果您没有更改源html的权限,您可以插入自己的javascript来设置focusin处理程序

比如,

public class MyWebView extends WebView
{
    protected String m_szFocusInputID = "";

    public void onStartLoad()
    {
        WebSettings oWebSettings = getSettings();
        oWebSettings.setJavaScriptEnabled(true);
        ... 
        m_oClient = new WebViewClientEx();
        setWebViewClient(m_oClient);
        ...
        addJavascriptInterface(new JSBridge( ), "MyApp");
        loadUrl("file:///android_asset/myfile.html"); 
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo oAttrs)
    {
        InputConnection oConn = super.onCreateInputConnection(oAttrs);

        if ("someid".compareTo(m_szFocusInputID) == 0)
        {
            oAttrs.inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL;
        }
        return oConn;
    }


    private class WebViewClientEx extends WebViewClient
    {
        @Override
        public void onPageFinished(WebView oView, String szUrl)
        {
            evaluateJavascript("$('#myinput1').focusin(function() { MyApp.onFocusIn(this.id); });", null);      
        }
    }


    public class JSBridge extends Object
    {
     ...
        @android.webkit.JavascriptInterface
        public void onFocusIn(String szFocusInputID)
        {
            m_szFocusInputID = szFocusInputID;
        }
    }   
}

您是否在此方法中找到了与区分WebView中的输入字段相关的内容
onCreateInputConnection
?遗憾的是,没有