使用android捕获按键

shu*_*uwo 11 android message key keypress

如何使用android SDK获取手机按键?我一直在寻找几个小时而没有找到任何东西..

例如:

在某些情况下,我想在用户按下电话上的"挂断"按钮时捕获消息,然后在消息到达操作系统之前丢弃该消息.

这可能吗?

小智 18

您可以处理视图中的关键事件,也可以处理整个应用程序的关键事件:

从视图处理onKey:

public boolean onKey(View v, int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_ENTER:
         /* This is a sample for handling the Enter button */
      return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

请记住实现OnKeyListener并设置监听器 YourView.setOnKeyListener(this);

第二种可能性是:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     switch (keyCode) {
     case KeyEvent.KEYCODE_MENU:
        /* Sample for handling the Menu button globally */
        return true;
     }
     return false;
} 
Run Code Online (Sandbox Code Playgroud)

你也可以看看onKeyUp.

资源:http://developer.android.com/reference/android/view/View.html

在这里,您可以看到包含所有KeyEvent的列表

  • 请注意,这不适用于所有键.HOME绝对不能被这种方式捕获,而END_CALL可能不会 - 我忘了那个.此外,如果您想拦截BACK按钮,最好在较新的Android SDK中实现onBackPressed(),尽管这在旧手机上不起作用. (3认同)