主页按钮监听器

时间:2011-05-06 05:22:06

标签: android

使用setOnKeyListener我可以侦听除Home和End按钮之外的所有物理按钮,是否有可能捕捉Home按钮的动作。

4 个答案:

答案 0 :(得分:3)

您可以在Android 4.0+上试试这个:
  1.为Intent.ACTION_CLOSE_SYSTEM_DIALOGS注册BroadcastReceiver。
  2.调用Intent.getStringExtra(" reason")以获取原因。原因如下:
     " Homekey酒店"按下主页键;
     "辅助"对于家庭钥匙长按;

答案 1 :(得分:2)

您无需捕捉主页按钮。如果用户按Home并且某些其他活动进入前台,则您的应用会转到后台并在当前活动中调用onPause()。您可以覆盖该功能以清除搜索字符串或您需要的任何内容。

<强>更新

更干净的解决方案是在启动该关键活动时使用标志FLAG_ACTIVITY_NO_HISTORY。因此,当您的活动进入后台系统时,将为您正确关闭它。

答案 2 :(得分:1)

您想使用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 ),这将使确保如果您的Activity重新启动,它将关闭任何现有实例。

答案 3 :(得分:0)

这只有在你修改主要的源代码时才有可能。虽然不建议用于应用目的。但更多的是面向隐藏的菜单。

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)