【问题标题】: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;
}