正如问题所示,我知道我们无法覆盖Home键事件,但如果您查看 android 2.2 的模拟器,您会看到一个应用程序 Car Home 它已经覆盖了大部分键,如Home,end call。
现在,关键是他们是如何做到的?我试图窥视应用程序的源代码,但令我惊讶的是它不可用或我无法找到它,但我不认为以后是这种情况。
答案 0 :(得分:9)
我同意@Romain Guy
您无法覆盖主页按钮的行为。
Car Home
应用的功能:它将自己定义为启动器。您也可以将自己定义为启动器,并在主屏幕即将启动时收到通知。
检查出来:Intent.html#CATEGORY_LAUNCHER
请注意,这并不意味着在按下主页按钮时会通知您的应用/活动,以便它可以覆盖其行为,但会在系统即将启动主屏幕时收到通知。两者都是不同的东西。在这种类型的通知中,Android已经将应用程序(当前正在执行)发送到冻结状态,并且它无法控制正在发生的事情。
据我所知。如果我在任何地方出错,我猜@Romain Guy
可能会纠正我。
答案 1 :(得分:4)
它不会覆盖Home键,Car Home应用程序只是作为启动器运行,任何应用程序都可以执行。此行为在清单文件中声明。
答案 2 :(得分:1)
在4.0上看起来如下:
在AndroidManifest.xml中
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>