在 onBackPressed 之前检测主页按钮按下 Android
Detect HomeButton pressed Android before onBackPressed
我正在开发一个 android 应用程序,当该应用程序处于后台时,它会在状态栏上显示一条通知。使用 onUserLeaveHint
我可以检测到用户何时按下 HOME 按钮,但当用户按下 BACK 按钮时也会触发相同的事件侦听器。
如何仅检测主页按钮按下?
当用户按下后退键时,您应该会收到对 onBackPresssed
的呼叫。您可以使用它来设置一个标志,以便您可以在 onUserLeaveHint
期间确定是否按下了后退按钮。之后记得清除flag。
您只需停用该特定页面的后退按钮即可。
这对我有用:
@Override
public void onBackPressed() {
}
我找到了使用 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;
}
}
很抱歉,所有建议的答案都已过时,其中一些是完全错误的。
由于安全问题和对恶意软件的恐惧,直接拦截 HOME 在 Froyo 上被阻止(如果你可以拦截 HOME,你可以尝试劫持设备)。
我知道将 BACK 与 HOME 分开的唯一解决方案是拦截 onNewIntent()
事件侦听器。
onNewIntent()
在应用程序 运行 时触发,并收到另一个要启动的意图。这就是为什么你会在按下 HOME 时得到它。
按下 BACK 后,您的应用将不会接收到 Intent。所发生的一切只是你上面的应用程序被删除了。所以你的应用程序出现在后台堆栈中,只有 onResume() 被调用。
这就是你的判断方式。
也提到了here。
祝你好运。
我正在开发一个 android 应用程序,当该应用程序处于后台时,它会在状态栏上显示一条通知。使用 onUserLeaveHint
我可以检测到用户何时按下 HOME 按钮,但当用户按下 BACK 按钮时也会触发相同的事件侦听器。
如何仅检测主页按钮按下?
当用户按下后退键时,您应该会收到对 onBackPresssed
的呼叫。您可以使用它来设置一个标志,以便您可以在 onUserLeaveHint
期间确定是否按下了后退按钮。之后记得清除flag。
您只需停用该特定页面的后退按钮即可。 这对我有用:
@Override
public void onBackPressed() {
}
我找到了使用 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;
}
}
很抱歉,所有建议的答案都已过时,其中一些是完全错误的。
由于安全问题和对恶意软件的恐惧,直接拦截 HOME 在 Froyo 上被阻止(如果你可以拦截 HOME,你可以尝试劫持设备)。
我知道将 BACK 与 HOME 分开的唯一解决方案是拦截 onNewIntent()
事件侦听器。
onNewIntent()
在应用程序 运行 时触发,并收到另一个要启动的意图。这就是为什么你会在按下 HOME 时得到它。
按下 BACK 后,您的应用将不会接收到 Intent。所发生的一切只是你上面的应用程序被删除了。所以你的应用程序出现在后台堆栈中,只有 onResume() 被调用。
这就是你的判断方式。
也提到了here。 祝你好运。