这已经让我发疯了一段时间了。
是否有任何方法可以可靠地检测是否在 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 键什么也不做。
更新:正如预期的那样,这有一些副作用 - 启用此模式后,嵌入的视频和谷歌地图似乎不可见。
更新:据说这个 hack 从 Android 4.0 起不再有效