2014-03-28 21 views
0

我在創建WebView的活動中存在KeyCodes問題&加載了一個URL。我注意到,當我按下鍵盤上的按鍵或紅外遙控器上的按鈕時,它不會調用WebView中的onKeyDown()方法。我猜它直接調用底層JavaScript(只要正確的鍵碼被傳遞,這是很好的)WebView和KeyEvents

我遇到的問題是我的紅外遙控器上的一些鍵被傳遞爲0(如Guide,Info,這些彩色按鈕全部用於播放相關選項)。但是,有些鍵可以工作(如數字按鈕)。任何想法keyCodes被劫持?我檢查了EventHub & InputDispatcher,他們似乎有正確的代碼。我是否需要在鉻/ android_webview代碼庫中檢查某處?下面是我用什麼樣的一個片段:

private class myWV extends WebView 
{ 
    public myWV(Context context) 
    { 
     super(context); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     Log.e("myWV", "onKeyDown: " +keyCode); 
     return super.onKeyDown(keyCode, event); 
    } 
} 


@Override 
public void onCreate(Bundle icicle) 
{ 
    Log.d(TAG, "onCreate"); 
    Toast.makeText(getApplicationContext(), "Please wait while we look for available TV channels...", Toast.LENGTH_LONG).show(); 

    super.onCreate(icicle); 

    mWebView = new myWV(this); 
    mWebView.setWebViewClient(new WebViewClient()); 
    mWebView.setWebChromeClient(new WebChromeClient()); 

    Log.e(TAG, "onCreate: Calling setJavaScriptEnabled"); 
    mWebView.getSettings().setJavaScriptEnabled(true); 

    mWebView.loadUrl(mURL); 

    // Enable the view 
    setContentView(mWebView); 
} 

希望任何提示

+0

檢查WebView.onKeyDown的文檔 - 它提到:'不要依賴這個來捕捉軟件按鍵。「http://developer.android.com/ reference/android/webkit/WebView.html – donfuxx

+0

您正在使用哪個API級別或Android版本?據我所知,4.0和4.1/4.2在處理各種事件方面略有差異,而4.1/4.2和4.4之間有很大的差異,因爲後來切換到Chromium Webkit引擎。 –

+0

@Wie WANG,我在4.4.2上。我所知道的是,當用於簡單的Activity(非基於WebView的)時,這些遠程鍵代碼工作得很好。不知何故,在這個應用程序,他們正在重新解釋(也許在鉻的web視圖?)。任何想法,我可以把一些打印進一步檢查? –

回答

0

發現在鉻的一段代碼,處理關鍵事件。只需在那裏添加我的特殊按鍵&它現在可以像魅力一樣工作