5

我一直在研究替换现有的 Car Home 应用程序,但我完全不知道如何覆盖 Home 按钮,以便每当手机停靠时我的应用程序就会回到前台。这就是汽车之家的工作方式,所以一定有办法。

BroadcastReceivers 似乎不起作用,因为每当按下 Home 按钮时广播的意图仍然会导致默认主屏幕应用程序启动;我无法阻止它。我可以从我的应用程序中覆盖主页按钮,但这对我没有好处,因为当用户在我的应用程序之外时这需要工作。Car Home 也不会做任何奇怪的事情,比如在运行时将自己设置为默认的主屏幕应用程序(我检查了 logcat 以确保)。

在这件事上,我真的把头撞到了墙上。有没有人有任何想法,或者你至少能指出我正确的方向吗?

4

4 回答 4

9

好吧,几个月后,我终于找到了这个问题的答案。关键是“android.dock_home”元数据元素,可在此处找到:

http://developer.android.com/reference/android/content/Intent.html#METADATA_DOCK_HOME

通过在您的 AndroidManifest.xml 中使用它,您可以使您的停靠应用程序暂时成为主应用程序。为此,将此行添加到 Dock 应用程序活动的 Activity 标记内的 AndroidManifest.xml 中:

<meta-data android:name="android.dock_home" android:value="true" />

如果该值设置为 true,则只要您的手机停靠在 Home 按钮上,您就会返回停靠应用程序。取消对接后,主页按钮将带您回到正常的主页应用程序。

于 2010-08-25T14:02:55.837 回答
2

不幸的是,在公共 API 中没有办法在没有用户确认的情况下覆盖 Home 按钮。

你最好的选择是实现一个CATEGORY_HOME意图。这意味着当用户按下 Home 时,他们将看到运行标准 Home 或您的 Home 的选项,并根据需要将您的设为默认。

当您的应用程序启动时,您可以检查手机是否已对接。如果手机没有对接,您可以打开标准主屏幕并在显示任何内容之前关闭您的应用程序。

于 2010-05-19T06:13:27.263 回答
2

您需要在清单中使用正确的意图过滤器,以便应用程序在您对接手机时自动启动。有关信息,请参阅http://developer.android.com/reference/android/content/Intent.html#CATEGORY_CAR_DOCK

于 2010-05-19T14:57:20.940 回答
0

我找到了解决 HOME 键的方法。对于您的应用程序,将清单设置为

<action android:name="android.intent.action.MAIN" />                              
<category android:name="android.intent.category.HOME" />                                
<category android:name="android.intent.category.DEFAULT" />                            
<category android:name="android.intent.category.MONKEY"/> 

现在您的应用程序是备用启动器应用程序。

使用 adb,并使用包管理器禁用启动器应用程序

下午禁用 com.android.launcher2。

现在 Home 键按下将始终保持在同一屏幕上。

于 2010-12-27T11:54:13.413 回答