我有一个问题,如果我禁用硬件菜单按钮(即返回,主页,菜单)。我在屏幕上留下了一个软件菜单栏。但是我以前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);
}
新版本的Android根本没有菜单按钮,尽管一些制造商ahem三星不断添加硬件菜单按钮。
要在导航栏中有菜单按钮,将发送菜单键码,您必须在AndroidManifest.xml中设置targetSdkVersion为10,这将使您的应用程序看起来很古老。
实际上,你可以期望只有三个硬件按钮(例如发送键码的按钮)-后退,音量上升和音量下降,并且使用音量按钮来改变声音音量是糟糕的风格。
你可以做一个hack,当最近的按钮被击中,而一个应用程序正在运行,它把应用程序在onPause。你能做的是,在app的onPause()
中,重新排序任务,把你的app放在所有任务之上。这样,你只会在按下最近应用程序按钮时遇到故障。
将此代码放在onPause()
((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)).moveTaskToFront(getTaskId(), 0);
重新排序任务需要以下权限。
<uses-permission android:name="android.permission.REORDER_TASKS" />