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