繁体   English   中英

覆盖汽车之家更换应用程序的主页按钮

[英]Overriding Home button for a Car Home replacement app

我一直在努力更换股票的汽车之家应用程序,我完全不知道如何覆盖主页按钮,以便我的应用程序将在手机停靠时返回到前台。 这是Car Home的工作方式,所以必须有办法。

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

在这方面,我一直在撞墙。 有没有人有任何想法,或者你能否至少指出我正确的方向?

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

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

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

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

如果该值设置为true,只要您的手机停靠,主页按钮就会返回停靠应用。 取消停靠后,主页按钮将带您回到普通的家庭应用程序。

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

您最好的选择是实现CATEGORY_HOME意图。 这意味着当用户按下Home时,他们会看到运行标准Home或者你的选项,如果他们想要的话,你可以选择默认。

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

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

我找到了解决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。

现在主页按键将保持在同一屏幕上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM