簡體   English   中英

如何在Android的Web視圖中觸發任何鍵碼鍵事件?

[英]How do I trigger any keycode key events in Android's webview?

例如,如果我希望網頁獲取鍵碼值為-1的事件,該怎么辦?

我嘗試使用webview.dispatchKeyEvent(...) ,但是如果KeyEvent的值不在KeyEvent.KEYCODE_XXX定義的常量中,則它將轉換為keyEvent.KEYCODE_UNKNOWN 即,頁面上接收到的事件鍵碼值為0

我該怎么辦?

API 19

WebviewCrosswalk都可以。

在javascript中,向窗口對象添加兩個函數: keyDownkeyUp 在Java中,您可以在主要活動中覆蓋dispatchKeyEvent函數:

@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
    final int keyCode = event.getKeyCode();
    final int keyAction = event.getAction();

    if (keyAction == KeyEvent.ACTION_DOWN)
        loadUrl("javascript:keyDown(" + keyCode + ")");
    else if (keyAction == KeyEvent.ACTION_UP)
        loadUrl("javascript:keyUp(" + keyCode + ")");

    return true;
}

調整此功能以處理不支持的按鍵。 關鍵是,一旦您在Java中讀取了鍵,就可以在不傳遞“ 0”值的情況下調用自定義js函數。

就我而言:

@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
    final int keyCode = event.getKeyCode();
    final int keyAction = event.getAction();
    final boolean keySupported = KeyHelper.isKeySupported(keyCode);

    if (keySupported)
    {
        if (keyAction == KeyEvent.ACTION_DOWN)
            loadUrl("javascript:keyDown(" + keyCode + ")");
        else if (keyAction == KeyEvent.ACTION_UP)
            loadUrl("javascript:keyUp(" + keyCode + ")");

        return true;
    }

    return super.dispatchKeyEvent(event);
}

其中isKeySupported函數檢查我要處理的所有鍵的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM