在 Android Web 应用程序中捕获方向键/轨迹球事件

发布于 2024-11-30 10:13:40 字数 422 浏览 0 评论 0 原文

我有一个 Android 应用程序,它主要是一个显示本地文件的 WebView 的包装器。 WebView 获取事件是因为 setContentView(thewebview) 被调用。大多数情况下这都可以正常工作(因为我们还在在线版本中处理 Android Webkit 浏览器)。

问题是我想添加对方向键/轨迹球事件的支持。我已经编写了适当的 onKeyDown,但 WebView 正在消耗事件,而不是活动。

这可以通过两种方式解决:

  1. 处理方向键向下/向上等的事件键码。在 Javascript onKeyDown 函数中
  2. 获取并消费相应的按键事件,然后 webview 才能获取它们。 (当然,所有事件都可以获得,大多数事件根本不会被消耗)

问题是我也不知道该怎么做。我该如何做到这一点或以不同的方式解决这个问题?

I've got an Android app which is mostly a wrapper around a WebView which show local files.
The WebView gets the events because setContentView(thewebview) is called. This works fine most of the times (since we also handle Android Webkit Browser in the online version).

Problem is that I want to add support for D-Pad/Trackball events. I've written the appropriate onKeyDown's, but the WebView is consuming the events, not the activity.

This can be fixed in two ways:

  1. Handle the event keycode for D-Pad Down/Up/etc. in the Javascript onKeyDown function
  2. Get and consume the appropriate key events before the webview can get them. (ofcourse also all events can be gotten, most will simply not be consumed)

Problem is I don't know how to do either. How can I do this or solve this in a different way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枕花眠 2024-12-07 10:13:40

只需使用 View.setOnKeyListener() 来处理 KeyEvents。

公共无效setOnKeyListener (View.OnKeyListener l)

注册在此视图中按下按键时要调用的回调。

在您的示例中,将像这样使用:

thewebview.setOnKeyListener(new OnKeyListener()
{
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        // do your stuff here
    }
});

Simply 'catch' the keypresses on the WebView by using View.setOnKeyListener() to handle the KeyEvents.

public void setOnKeyListener (View.OnKeyListener l)

Register a callback to be invoked when a key is pressed in this view.

In your example that would be used like this:

thewebview.setOnKeyListener(new OnKeyListener()
{
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        // do your stuff here
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文