捕获 何种按键的方法:

boolean mBackPressed = false; 
 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
        switch (keyCode) { 
        case KeyEvent.KEYCODE_BACK: 
            mBackPressed = true; 
            break; 
        case KeyEvent.KEYCODE_MENU: 
            if (mBackPressed) 
                unLock(); 
            break; 
        default: 
            mBackPressed = false; 
            showMessage(); 
            break; 
        } 
    } 
    return true; 
} 
 
private void showMessage() { 
    Toast.makeText(getBaseContext(), "Back + Menu", Toast.LENGTH_SHORT) 
            .show(); 
} 
 
private void unLock() { 
    this.setResult(Activity.RESULT_OK); 
    this.finish(); 
}

 

上面的方法是不能捕获home。back建的,但是可以捕获大多数建,对于特殊的建 有的是不能捕获的如 endCall

有的需要其他方法如back。

 

如果要写一个替代 Home Screen 使用 android.intent.category.HOME.

在官方文档

 docs

...not all activities have the behavior that they are destroyed when BACK is pressed. When the user starts playing music in the Music application and then presses BACK, the application overrides the normal back behavior, preventing the player activity from being destroyed, and continues playing music, even though its activity is no longer visible

 

通常back建会是程序进入死亡状态,如果你想使程序进入stop状态而不是死亡状态,那么最好使用一个service,因为即使back建之后他还是会继续执行。用你的activity控制service就好,通常你会用到下面的代码

 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
        moveTaskToBack(true); 
        return true; 
    } 
    return super.onKeyDown(keyCode, event); 
}
 红色的是要加入。或者你尅一参考
http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html使用
@Override
public void onBackPressed() {
// do something on back.
return;
}


捕获back建