Android WebView上的onKeyDown,dispatchKeyEvent等用于密钥跟踪

时间:2015-03-07 07:59:49

标签: android webview keyboard tracking

我正在开发一个在WebView中输入数据时跟踪密钥的应用程序。 是否可以在WebView上拥有onKeyEvent,dispatchKeyEvent ... 我已经在互联网上搜索了很多但是找不到完美的解决方案......几乎所有的东西都试过......

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我似乎不可能在webView上从键盘上捕获事件(基于:https://code.google.com/p/android/issues/detail?id=66715)。

我必须为我的应用程序实现自己的键盘。我现在可以轻松地从键盘上捕捉事件。

如果您也想自己动手,我建议您按照本教程进行操作:http://www.fampennings.nl/maarten/android/09keyboard/index.htm 如果您想在应用程序外使用键盘,请使用此键盘: http://code.tutsplus.com/tutorials/create-a-custom-keyboard-on-android--cms-22615

希望它有所帮助,如果您找到其他解决方案,请告诉我们

答案 1 :(得分:0)

这个问题有点老了,我发现这个解决方案并不完美,但是只要您只有一种类型的字段(意思是文本/数字等),您实际上就可以捕获键盘按键,但是也许对某人会有帮助。

public class WebViewGo extends WebView {
    public WebViewGo(Context context, AttributeSet attrs) {
        super(context, attrs);
    }



    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        BaseInputConnection inputConnection = new BaseInputConnection(this, false);
        outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE;
       outAttrs.inputType = EditorInfo.TYPE_CLASS_NUMBER;
        return inputConnection;
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        boolean isDispached = super.dispatchKeyEvent(event);

        if(event.getAction() == KeyEvent.ACTION_UP){
            switch (event.getKeyCode())
            {
                case KeyEvent.KEYCODE_ENTER:
                    InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(getWindowToken(), 0);
                break;
            }
        }

        return isDispached;
    }


}

我从此link

中获取了代码