How to capture app switch key using onKeyDown in Android?
我正在尝试在android 3.1和4.0上捕获应用程序切换键和主键,但似乎不起作用。
这是我在做什么
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (KeyCode == KeyEvent.KEYCODE.KEYCODE_APP_SWITCH && event.getRepeatCount() == 0) { Log.d ("onkeydown","app switch key"); } else if (KeyCode == KeyEvent.KEYCODE.KEYCODE_HOME && event.getRepeatCount() == 0) { Log.d ("onkeydown","home key"); } //EDIT: return super.onKeyDown(keyCode, event); } |
我的log.d语句未打印。 是否可以捕获这两个键?
使用正确的返回语句更新代码
嗯
好吧,不,你不能。
public static final int KEYCODE_HOME
Since: API Level 1
Key code constant: Home key.
This key is handled by the framework and is never delivered to applications.
http://developer.android.com/reference/android/view/KeyEvent.html
可以使用反射来实现。
它在类
也可以在这里尝试这种方法
super.onKeyDown(keyCode,event)丢失了,我认为您应该尝试以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @Override public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode, event); if (KeyCode == KeyEvent.KEYCODE.KEYCODE_APP_SWITCH && event.getRepeatCount() == 0) { Log.d ("onkeydown","app switch key"); } else if (KeyCode == KeyEvent.KEYCODE.KEYCODE_HOME && event.getRepeatCount() == 0) { Log.d ("onkeydown","home key"); } return true; } |
使用switch语句执行相同的操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @Override public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode, event); switch(keyCode) { case KeyEvent.KEYCODE_CAMERA: Toast.makeText(ListViewActivity.this,"Pressed Camera Button", Toast.LENGTH_SHORT).show(); return true; case KeyEvent.KEYCODE_1: Toast.makeText(ListViewActivity.this,"Pressed 1", Toast.LENGTH_SHORT).show(); return true; case KeyEvent.KEYCODE_HOME: Toast.makeText(ListViewActivity.this,"Pressed Home Button", Toast.LENGTH_SHORT).show(); return true; case KeyEvent.KEYCODE_BACK: Toast.makeText(ListViewActivity.this,"Pressed Back Button", Toast.LENGTH_SHORT).show(); finish(); return true; } return false; } |