Android-捕获/抑制Home和EndCall按钮事件?

Android-捕获/抑制Home和EndCall按钮事件?,android,key,keydown,Android,Key,Keydown,如果您曾经尝试在Android上编写locker应用程序,请确保遇到以下问题: boolean mBackPressed = false; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_BAC

如果您曾经尝试在Android上编写locker应用程序,请确保遇到以下问题:

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();
}
似乎onKeyDown正在过滤除“后退”和“菜单”之外的所有键。…
这不是真的!“主页”按钮仍将显示主屏幕,“结束呼叫”按钮将运行本机锁定应用程序

那个家伙也声称这是个问题:



您知道阻止两个按钮的解决方法吗?
是唯一的方法(通常)-?

你可以

我不认为你能截获Home和End Call按钮。如果可以,这将允许恶意应用程序阻止用户离开,从而有效地劫持手机


应用程序的一个选项是使用.

Ugh。。。我把几个钮扣放错地方了。。。对不起。这是我需要处理的Home和EndCall。谈到恶意应用程序,我相信用户总是可以重置手机或类似的东西。当然这是一个问题,但每个恶意用户只能使用一次。我认为这是出于设计,您无法捕获Home和EndCall,因此用户可以始终以相同的方式离开应用程序。您可以选择使用android.intent.category.Homeintent编写一个替换主屏幕。