欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

Android TV中WebView的按键响应问题

Android 迷途小书童 5年前 (2020-01-03) 5611次浏览 0个评论

软硬件环境

  • macOS
  • Android studio
  • BesTV box

问题场景

当布局中是一个WebView时,打开页面后,焦点就移到了WebView上,默认情况下,此时遥控器只响应返回键,如果需要响应其它键值(比如菜单键),这时该怎么做呢?本文就来解答这个问题。

应对方法

一般的键值处理是放在onKeyDown(int keyCode,KeyEvent keyevent)里处理的,不过在上述场景中,onKeyDown方法中接收不到菜单键,如果想让其也能够接收到,也不难,往下看。

  1. webView = (WebView)findViewById(R.id.webView);
  2. WebSettings webSettings = webView.getSettings();
  3. webSettings.setJavaScriptEnabled(true);
  4. webSettings.setUseWideViewPort(true);
  5. webSettings.setLoadWithOverviewMode(true);
  6. webView.setWebViewClient(new WebViewClient(){
  7. @Override
  8. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  9. view.loadUrl(url);
  10. //return super.shouldOverrideUrlLoading(view, url);
  11. return true;
  12. }
  13. @Override
  14. public boolean shouldOverrideKeyEvent(WebView webView,KeyEvent keyEvent) {
  15. //让onKeyDown来处理KeyEvent.KEYCODE_STAR,此处对应小红遥控器菜单键
  16. if (keyEvent.getKeyCode() == KeyEvent.KEYCODE_STAR) {
  17. return true;
  18. } else {
  19. return false;
  20. }
  21. }
  22. }
喜欢 (0)

您必须 登录 才能发表评论!