我有一个问题,如果我禁用硬件菜单按钮(即后面,主页,菜单)。我在屏幕上留下了一个软件菜单栏。但是我以前的KEYCODE_MENU按键侦听器不再适用于此虚拟菜单按钮。有人可以帮助我使用这个虚拟菜单按钮的正确的键监听器吗?
以下在硬件菜单按钮上工作之前,但在我禁用硬件按钮并在android中启用了软菜单按钮时停止工作:
@Override
public boolean onKeyDown(int keycode, KeyEvent e) {
switch(keycode) {
case KeyEvent.KEYCODE_MENU:
doSomething();
return true;
}
return super.onKeyDown(keycode, e);
}
答案 0 :(得分:0)
New versions of Android do not have Menu button at all,虽然有些制造商 ahem 三星不断添加硬件菜单按钮。
要在导航栏中输入Menu菜单按钮,您需要在AndroidManifest.xml中将targetSdkVersion设置为10,这将使您的应用程序看起来很古老。
你可以真实地期望只有三个硬件按钮(例如将发送键码的按钮) - 后退,音量增大和音量调低,并且将音量按钮用于改变音量以外的任何其他方式都是不好的。
答案 1 :(得分:0)
你可以做一次黑客攻击,当应用程序运行时按下最近的按钮,它会将应用程序置于onPause。因此,您可以在应用程序的onPause()
中重新排序任务并将您的应用程序置于所有任务之上。这样,只有在按下最近的应用程序按钮时才会出现故障。
将此代码放在onPause()
((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)).moveTaskToFront(getTaskId(), 0);
需要以下许可才能重新排序任务。
<uses-permission android:name="android.permission.REORDER_TASKS" />