Android 覆盖Amazon Fire Tv Stick remote上的硬件菜单按钮时出现故障
亚马逊Fire电视棒在其遥控器上有一个专用的菜单按钮,我想提供功能,但无法覆盖。我可以覆盖遥控器上的所有其他按钮,但不能覆盖菜单按钮。我知道菜单按钮可以工作,因为它仍然会显示默认的Android选项菜单和菜单片段。这是我覆盖菜单按钮的代码Android 覆盖Amazon Fire Tv Stick remote上的硬件菜单按钮时出现故障,android,overriding,keycode,amazon-fire-tv,Android,Overriding,Keycode,Amazon Fire Tv,亚马逊Fire电视棒在其遥控器上有一个专用的菜单按钮,我想提供功能,但无法覆盖。我可以覆盖遥控器上的所有其他按钮,但不能覆盖菜单按钮。我知道菜单按钮可以工作,因为它仍然会显示默认的Android选项菜单和菜单片段。这是我覆盖菜单按钮的代码 public boolean onKeyUp (int keycode, KeyEvent event) { if(keycode == KeyEvent.KEYCODE_MENU) { Toast.makeText(this, "me
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中的其他内容也覆盖了菜单按钮,可能是为了运行选项菜单
谢谢你的帮助 您可能已经更新了SDK安装中的支持库,这是Google方面的一个已知错误,可能会覆盖该特定按钮的行为 我相信这将在未来版本的库中得到解决。 现在的解决方案是什么 你可以: 在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或更低
或
结果表明,这将在当前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);
}
我注意到在Amazon示例中,它们覆盖了onKeyDown而不是OnKeyUpposable复制: