这件事已经让我抓狂一段时间了。
是否有任何方法可靠地检测如果主页按钮已被按下在一个 Android 应用程序?
如果做不到这一点,是否有一种强有力的方法来判断是什么导致一个活动进入暂停状态?我们能否检测出这是由于一个新的活动发起或按回/家造成的。
我看到的一个建议是覆盖 onPause ()并调用 isFinishing () ,但是当按下 home 按钮时,这将返回 false,就像当一个新活动开始时一样,因此这无法区分两者。
非常感谢你的帮助。
* * 更新 * * : 感谢@android 饥渴的链接: < a href = “ http://nisha113a5.blogspot.com/”rel = “ norefrer”> 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);
因此,似乎与普遍的看法相反,你实际上可以听到主键。令人担忧的是,您可以返回 false 并且让 home 密钥什么也不做。
更新 : 正如所料,有一些副作用与此-似乎嵌入式视频和谷歌地图是不可见的这种模式启用。
更新 : 据推测,从 Android 4.0开始,这种黑客手段就不再起作用了