正如问题所暗示的,我知道我们不能覆盖 Home 键事件,但如果你查看android 2.2的模拟器,你会看到一个应用程序Car Home,它已经覆盖了大多数键,如 Home、结束通话。
现在,关键是他们是怎么做到的?我试图窥视该应用程序的源代码,但令我惊讶的是它不可用或我无法找到它,但我认为以后不会是这种情况。
正如问题所暗示的,我知道我们不能覆盖 Home 键事件,但如果你查看android 2.2的模拟器,你会看到一个应用程序Car Home,它已经覆盖了大多数键,如 Home、结束通话。
现在,关键是他们是怎么做到的?我试图窥视该应用程序的源代码,但令我惊讶的是它不可用或我无法找到它,但我认为以后不会是这种情况。
我同意@Romain Guy
您不能覆盖主页按钮的行为。
该Car Home
应用程序的作用:它已将自己定义为启动器。您还可以将您的定义为启动器,当主屏幕即将启动时,它会收到通知。
看看这个:Intent.html#CATEGORY_LAUNCHER
请注意,这并不意味着您的应用程序/活动在按下主页按钮时会收到通知,以便它可以覆盖它的行为,而是在系统即将启动主屏幕时收到通知。两者都是不同的东西。在这种类型的通知中,Android 已经将应用程序(当前正在执行)发送到冻结状态,并且它无法控制正在发生的事情。
这是据我所知。@Romain Guy
如果我在任何地方错了,我想可能会纠正我。
它不会覆盖 Home 键,Car Home 应用程序只是充当启动器,任何应用程序都可以这样做。此行为在清单文件中声明。
看起来在 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>