【问题标题】:Catching when the user pressed the Home Button当用户按下主页按钮时捕捉
【发布时间】:2012-02-07 16:32:31
【问题描述】:

我想知道用户在运行我的应用程序时何时按下主页按钮。 但: 问题是我不想编辑现有代码。 这意味着我不想向现有活动onPause() 方法添加逻辑。

我找到的唯一解决方案是向应用程序添加一个服务,该服务侦听日志检测是否有运行的意图

HOME:开始:Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME]

还有其他方法可以做到还是真的不可能? 最佳解决方案是在 Manifest.xml 中捕获一个意图,例如:

action android:name="android.intent.category.HOME"

并实现一个新类来捕获它。 (但它似乎没有抓住它)。

【问题讨论】:

标签: android android-intent manifest


【解决方案1】:

我想知道用户在运行我的应用程序时何时按下主页按钮。

你具体想达到什么目标?

但是:问题是我不想编辑现有代码。

根据定义,这是不可能的。

我找到的唯一解决方案是向应用程序添加一个服务,该服务侦听日志检测是否有运行的意图

那是修改代码,违反了自己的要求。此外,它需要一个你真的不应该要求的权限。

有没有其他方法可以做到,还是真的不可能?

这取决于您想要实现的具体目标。

最佳解决方案是在 Manifest.xml 中捕获一个意图...并实现一个新类来捕获它。 (但它似乎没有抓住它)。

HOME 是一个类别。这不是一个动作。主屏幕是响应HOME 类别中的MAIN 操作的活动。但是,它正在修改代码,违反了您自己的要求。

【讨论】:

    【解决方案2】:

    您可以使用按键事件处理程序

    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_HOME) {
                // Home key pressed
            } else {
                return super.onKeyDown(keyCode, event);
            }
            return false;
        }
    

    【讨论】:

    • HOME 按钮未发送到onKeyDown()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多