我正在开发一个Android应用程序,当应用程序处于后台时,它会在状态栏上显示通知。使用onUserLeaveHint
我可以检测用户何时按下HOME按钮,但是当用户按下BACK按钮时也会触发相同的事件监听器。
如何才能检测HOME按钮?
答案 0 :(得分:2)
我很遗憾地说,但所有建议的答案都已过时,其中一些是彻头彻尾的错误。
由于安全问题以及对恶意软件的恐惧(如果您可以拦截HOME,您可以尝试并劫持设备),直接拦截HOME以阻止回到Froyo。
我知道从HOME分离的唯一解决方案是截取onNewIntent()
事件监听器。
onNewIntent()
,并收到另一个要启动的意图。这就是为什么当按下HOME时你会得到它。
按下BACK后,您的应用不会收到意图。所有这一切都将删除您之上的应用程序。因此,您的应用程序从后台堆栈中显示,只调用onResume()。
这就是你怎么说的。
还提到here。 古德勒克。
答案 1 :(得分:0)
当用户按下时,您应该会收到onBackPresssed
的来电。您可以使用此设置标记,以便在onUserLeaveHint
期间确定是否按下了后退按钮。记得事后清除旗帜。
答案 2 :(得分:0)
我找到了使用onStop()
和onResume()
方法的解决方案。
那是我的代码
@Override
public void onBackPressed() {
Intent intent = new Intent(this, PagerActivity.class);
startActivity(intent);
finish();
}
/* Handle notification create/destroy */
private Boolean notificationCreated = false;
@Override
protected void onStop() {
Utils.createNotification();
notificationCreated = true;
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
if (notificationCreated)
{
Utils.cancelNotification();
notificationCreated = false;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (notificationCreated) {
Utils.cancelNotification();
notificationCreated = false;
}
}
答案 3 :(得分:-2)
您只需停用该特定页面的后退按钮即可。 这对我有用:
@Override
public void onBackPressed() {
}