我一直在努力更换股票的Car Home应用程序,我完全不知道如何覆盖Home按钮,以便在手机停靠时我的应用程序将被带回到前台。这就是Car Home的工作方式,所以必须有办法。
似乎BroadcastReceivers不起作用,因为每当按下Home按钮时广播的意图仍然会导致默认的主屏幕应用程序启动;我无法阻止它。我可以从我的应用程序中覆盖主页按钮,但这对我没有好处,因为当用户在我的应用程序之外时,这需要工作。 Car Home也没有做任何奇怪的事情,比如在运行时将自己设置为默认的主屏幕应用程序(我检查了logcat以确保)。
我一直在靠墙打我的头。有没有人有任何想法,或者你能否至少指出我正确的方向?
答案 0 :(得分:9)
好吧,经过好几个月,我终于找到了这个问题的答案。关键是“android.dock_home”元数据元素,可在此处找到:
http://developer.android.com/reference/android/content/Intent.html#METADATA_DOCK_HOME
通过在AndroidManifest.xml中使用它,您可以暂时使Dock应用程序成为主应用程序。为此,请将此行添加到Dock应用活动的Activity标记内的AndroidManifest.xml中:
<meta-data android:name="android.dock_home" android:value="true" />
如果该值设置为true,只要您的手机停靠,主页按钮就会返回停靠应用。取消停靠后,主页按钮将带您回到普通的家庭应用程序。
答案 1 :(得分:2)
不幸的是,公共API中没有办法在用户没有确认的情况下覆盖Home按钮。
您最好的选择是实施CATEGORY_HOME
意图。这意味着当用户按下Home时,他们会看到运行标准Home或者你自己的选项,如果他们想要的话,你可以选择默认。
当您的应用程序启动时,您可以检查手机是否已停靠。如果手机未停靠,则可以打开标准主屏幕并在显示任何内容之前关闭应用程序。
答案 2 :(得分:2)
您需要在清单中使用正确的意图过滤器,以便在停靠手机时自动启动应用。有关信息,请参阅http://developer.android.com/reference/android/content/Intent.html#CATEGORY_CAR_DOCK。
答案 3 :(得分: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"/>
现在你的应用程序是一个备用的Launcher应用程序。
使用adb,并使用包管理器
禁用启动器应用程序pm禁用com.android.launcher2。
现在Home键按下将保持在同一个屏幕上。