如果你曾试图在Android上编写一个更衣室应用确定你遇到了这个问题:
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过滤掉所有键,但“后退”和“菜单”...
嗯,这不是真的!主页按钮仍会为您带来主屏幕,结束通话按钮将运行原生的Locker应用程序!
那里的研究员也声称这是一个问题:
How to listen from ENDCALL button
problem With Home Back screen button
Supressing Key presses in Activity, especially in Options Menu
Issue 4202: Feature Suggestion: permission for intercepting KEYCODE_CALL
您知道阻止这些按钮的任何解决方法吗? 唯一的方法(经常) - write in C ?
答案 0 :(得分:7)
你可以capture the Back key quite easily。
我认为您无法拦截Home和End Call按钮。如果可以,这将允许恶意应用程序阻止用户离开它,从而有效地劫持手机。
您的应用程序的一个选项是使用android.intent.category.HOME
Intent编写替换主屏幕。