0

Android アプリの入力を webview でオーバーライドしようとしています。ログを取得したため、onKeyDownに入りますが、すべてを試しても何もしません。

多分それはwebviewだからですか?、webviewはイベントの後にロードされますか?

ここに私のコードがあります:

public class MainActivity extends Activity{


private WebView mWebView;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_main);

    //asociamos
    mWebView = (WebView) findViewById(R.id.webview);

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
    mWebView.setFocusable(true);
    mWebView.getSettings().setLoadWithOverviewMode(true);
    mWebView.getSettings().setUseWideViewPort(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    mWebView.setScrollbarFadingEnabled(false);

    //cargo un .html que he situado en la carpeta asset/ del proyecto
    mWebView.loadUrl("localUrl webview");
    mWebView.requestFocusFromTouch();
    mWebView.requestFocus();


}


public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.v("keyEntra",String.valueOf(keyCode));
    mWebView.requestFocus();
      int mappedKey = keyCode;
    if (keyCode == KeyEvent.KEYCODE_HOME) {
        mappedKey = KeyEvent.KEYCODE_DPAD_LEFT;
         super.onKeyDown(mappedKey, event);
         return true;
    }
    else if(keyCode == KeyEvent.KEYCODE_BACK){
      mappedKey = KeyEvent.KEYCODE_A;
    Log.v("keyNew",String.valueOf(mappedKey));
     super.onKeyDown(mappedKey, event);
     return true;
    }
    else{
        return super.onKeyDown(keyCode, event);  
    }

}

ありがとう、

4

1 に答える 1

0

わかりました、インストルメンテーションを使用するだけで、最終的に解決策を見つけました

    public static void simulateKey(final int KeyCode) {

    new Thread() {
        @Override
        public void run() {
            try {
                Instrumentation inst = new Instrumentation();
                inst.sendKeyDownUpSync(KeyCode);
            } catch (Exception e) {
                Log.e("Exception when sendKeyDownUpSync", e.toString());
            }
        }

    }.start();
}
于 2013-10-01T08:16:41.773 に答える