【问题标题】:Android Overriding home keyAndroid 覆盖主页键
【发布时间】:2011-06-29 16:44:18
【问题描述】:

正如问题所暗示的,我知道我们无法覆盖 Home 键事件,但如果您查看 android 2.2 的模拟器,您会看到一个应用程序 Car Home已经覆盖了大多数键,例如 Home、结束通话。

现在,重点是他们是如何做到的?我试图窥视应用程序的源代码,但令我惊讶的是它不可用或者我无法找到它,但我认为以后不会是这样。

【问题讨论】:

    标签: android key android-launcher android-homebutton


    【解决方案1】:

    我同意@Romain Guy

    您不能覆盖主页按钮的行为。

    Car Home 应用程序的作用:它将自己定义为启动器。您也可以将自己的启动器定义为启动器,当主屏幕即将启动时会通知它。

    看看这个:Intent.html#CATEGORY_LAUNCHER

    请注意,这并不意味着您的应用/活动在按下主页按钮时会收到通知,以便它可以覆盖它的行为,而是在系统即将启动主屏幕时收到通知。两者都是不同的东西。在这种类型的通知中,Android 已经将应用程序(当前正在执行)发送到冻结状态,并且它无法控制正在发生的事情。

    据我所知。如果我在任何地方错了,我想@Romain Guy 可能会纠正我。

    【讨论】:

    • 当 Home 键被​​按下时,你有 CATEGORY_LAUNCHER 的 Activity 是如何做的?
    • 虽然这个想法来自 Romain Guy,但我发现这个答案更具描述性和实用性
    【解决方案2】:

    它不会覆盖 Home 键,Car Home 应用程序只是充当启动器,任何应用程序都可以这样做。此行为在清单文件中声明。

    【讨论】:

    • 我不明白你能不能多描述一些或一些代码示例,如何实现该应用程序源代码的链接,因为它是开源的:)
    • 查看库存 Android 启动器的清单,您会找到答案。
    【解决方案3】:

    在 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>
    

    【讨论】:

    • 我试过这个,但如果用户将应用程序设置为默认启动器,它总是在单击 HOME 按钮时启动活动。但是,实际行为应该是 HOME 按钮仅在应用程序中而不是在应用程序之外被覆盖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多