【问题标题】:Trouble overriding hardware menu button on Amazon Fire Tv Stick remote无法覆盖 Amazon Fire Tv Stick 遥控器上的硬件菜单按钮
【发布时间】:2015-05-13 19:32:16
【问题描述】:

Amazon Fire 电视棒的遥控器上有一个专用的菜单按钮,我想提供功能但无法覆盖。我可以覆盖遥控器上的所有其他按钮,但不能覆盖菜单按钮。我知道菜单按钮有效,因为它仍然会显示默认的 Android 选项菜单和 MenuFragment。这是我覆盖菜单按钮的代码。

public boolean onKeyUp (int keycode, KeyEvent event) {
    if(keycode == KeyEvent.KEYCODE_MENU) {
        Toast.makeText(this, "menu pressed", Toast.LENGTH_SHORT).show();
        return true;
    }
return super.onKeyUp(keycode, event);
}

我能想到这可能不起作用的唯一原因是,如果我的 mainActivity 中的其他东西也覆盖了菜单按钮,也许是为了运行选项菜单。

感谢您的帮助!

【问题讨论】:

标签: android overriding keycode amazon-fire-tv


【解决方案1】:

您可能已经更新了 SDK 安装中的支持库,这是 Google 方面的一个已知错误,可能会覆盖该特定按钮的行为。

我相信这将在库的未来版本中得到解决。 https://code.google.com/p/android/issues/detail?id=159795

现在有什么解决办法?

你可以: 在 Gradle 中,打开 build.gradle 文件并进行以下修改:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:appcompat-v7:21.0.3'
}

如果支持库产生错误(下方的波浪形红线),请确保您的 targetSDKVersion 为 19 或以下。

或者 https://stackoverflow.com/a/29852304/2837959

【讨论】:

    【解决方案2】:

    事实证明这将在当前的 appcompat 版本中工作。

    @Override
        public boolean dispatchKeyEvent(KeyEvent event) {
            int keyCode = event.getKeyCode();
            int action = event.getAction();
            boolean isDown = action == 0;
    
            if (keyCode == KeyEvent.KEYCODE_MENU) {
                return isDown ? this.onKeyDown(keyCode, event) : this.onKeyUp(keyCode, event);
            }
    
            return super.dispatchKeyEvent(event);
        }
    

    【讨论】:

      猜你喜欢
      • 2022-07-15
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多