我知道我不能像使用后退按钮那样覆盖主页按钮。但是如果按下主页按钮,android系统可以触发事件吗?我想捕捉此动作,以便在用户按下主页按钮时显示警告消息。我已经研究了几个选项,最明显的选择,初学者将覆盖主页按钮
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
// action goes here
} else {
return super.onKeyDown(keyCode, event);
}
}
但这不起作用,我完全意识到了这一点。
当前Activity
完成后,将调用onPause方法。当用户在我的应用程序中更改Activity
时,也会调用此方法。那么当他按下主页按钮时,我可以向用户显示通知框吗?
提前致谢
答案 0 :(得分:2)
实际上,无法像其他人一样抓住主页按钮按下事件,这是一项保护用户的功能。
但是你的情况有一个 hack :
@Override
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onAttachedToWindow();
}
当视图附加到窗口
时调用此方法
您可以阅读Activity Lifecycle此黑客的工作原理。
此外,here is the evidence显示此方法有效。
答案 1 :(得分:2)
@Override
protected void onUserLeaveHint() {
// TODO Auto-generated method stub
super.onUserLeaveHint();
}
这也可以帮助