主页按钮侦听器
您不需要捕捉主页按钮。如果用户按Home并且其他一些活动出现在前台,则您的应用程序将转到后台并在您当前的活动中调用onPause()
。你可以重写该函数来清理搜索字符串或任何你需要的东西。
UPDATE:
更干净的解决方案是在开始这一关键活动时使用标志FLAG_ACTIVITY_NO_HISTORY。所以,当你的活动去后台系统将适当地关闭它。
您想要使用public boolean dispatchKeyEvent(KeyEvent event)
,如下所述:http://developer.android.com/reference/android/app/Activity.html#dispatchKeyEvent%28android.view.KeyEvent%29。
使用它,像这样:
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
// do whatever you want to do here, then return true if you handled the key code
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
mBackDown = true;
return true;
case KeyEvent.KEYCODE_HOME:
mHomeDown = true;
return true;
}
}
return super.dispatchKeyEvent(event); // let the default handling take care of it
}
让我知道这是否为你的作品。
编辑:不知道为什么这不适合你,但没有看透你的代码的其余部分,这将很难分辨究竟是怎么回事。但是,对于您的任务,我建议您使用finishOnTaskLaunch
清单属性,如http://developer.android.com/guide/topics/manifest/activity-element.html#finish所述:正确使用(将其设置为true),这将确保如果您的活动重新启动,它将关闭任何现有实例。
嗨Femi,它仍然不适用于家庭,终端和电源按钮。 – Vignesh 2011-05-06 07:06:19
奇数:这对我很有用,至少在Home和Back按钮中有效。我不确定END按钮:不知道END有一个物理按钮。另外,对于HOME,您可能需要将您的活动设置为主屏幕(否则我相信Android会过滤掉该按键)。我不认为你可以捕获POWER按钮:在我看来,这将是一个主要的安全问题:有人可能会写一些拒绝让你关闭设备的东西。所以你可能在电源按钮上运气不好。 – Femi 2011-05-06 13:15:38
嗨Femi,我不需要听结束按钮或电源按钮,我只想听只有主页按钮,我只是告诉你,家庭,结束和权力不工作的听众。 – Vignesh 2011-05-09 04:16:51
这是唯一可能的,如果你修改主要的android源代码。虽然这不建议用于应用程序目的。但更多的隐藏菜单。
public static final int KEYCODE_HOME
Since: API Level 1
Key code constant: Home key. This key is handled by the framework and is never delivered to applications.
Constant Value: 3 (0x00000003)
你可以试试这个在Android 4.0以上版本:
1.注册一个BroadcastReceiver为Intent.ACTION_CLOSE_SYSTEM_DIALOGS。
2.调用Intent.getStringExtra(“reason”)来获取原因。原因如下:
家庭按键的“homekey”按下;
“帮助”长按Home键;
我很确定你不能覆盖Home。你为什么想要? – 2011-05-06 05:29:13
在我的应用程序中,我正在阅读一些不应该被任何第三人访问的重要文件,如果我正确地退出该应用程序是不可能的,但是当用户从该活动中按Home时,可以打开该活动搜索。 – Vignesh 2011-05-06 06:42:21
捕捉主页按钮的方法无效。您应该遵循活动生命周期并查看用户按Home按钮时发生的情况。 – Zelimir 2011-05-06 07:12:22