这已经让我发疯了一段时间。
有什么方法可以可靠地检测到是否已在Android应用程序中按下了主页按钮?
失败的话,是否有一种健壮的方法来告诉导致活动进入onPause的原因?即我们是否可以检测到它是由启动新活动还是按回车/主页引起的。
我看到的一个建议是重写onPause()并调用isFinishing(),但是当按下主屏幕按钮时,它将返回false,就像启动新活动一样,因此无法区分两者。
任何帮助,不胜感激。
**更新**:感谢@ android-hungry提供此链接:https : //nishandroid.blogspot.com/
覆盖以下方法:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
然后,按下主页按钮会触发以下事件:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
我不确定此行是否有任何副作用:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
因此,似乎与普遍看法相反,实际上您可以侦听Home键。令人担忧的是,您可以返回false并让home键不执行任何操作。
更新:符合预期,这会有一些副作用-启用此模式后,嵌入的视频和Google地图似乎不可见。
更新:据说此hack从Android 4.0起不再起作用
Activity.onUserLeaveHint()
。