所以我尝试做许多人之前尝试过的事情:创建一个不响应Home按钮的应用程序。我看过很多关于SO的类似问题,但没有一个像我想要的那样工作。
我试过的一件事就是让我的应用程序基本上是另一个启动器。 (注意:需要少量用户输入才能使其正常工作。)
从我的应用程序的清单:
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />
我也禁用了后退按钮,并将启动模式设为“singleInstance。”
我认为Toddler Lock做了类似的事情,但我的实现方式并不完全相同。使用我的实现,我的应用程序作为默认的主启动器存在,无限期地包括在退出应用程序之后。有没有办法在Application Manifest以外的地方声明相同的行为,可以暂时打开它,也可以在退出应用程序时关闭它?
Car Home也做了类似的事情,实际上它比Toddler Lock更好。我不确定它是如何做到的(也许它有更多的权限,因为它是一个原生应用程序),但它设法做同样的事情,而不要求用户接受备用启动器或选择应用程序作为默认启动器。任何人都知道它是如何做到的?
答案 0 :(得分:2)
hackbod基本上是正确的。
我已经得到了很多理想的行为唯一的问题是捕获主页活动应该实际执行的操作。在我的情况下,我需要它只是去应用程序的开始...所以它制造CATEGORY_HOME意图,测试它正确解析,如果是这样,转发到应用程序。如果它无法正确解析,它会通知用户,等待用户准备好,然后使用该意图。这样,如果用户选择了您的应用但未将其设为默认值,则会再次收到提示。
答案 1 :(得分:1)
要在用户将应用程序作为主应用程序启用后禁用此功能,请使用PackageManager.setComponentEnabledSetting()禁用该活动。请注意,这意味着覆盖主页的活动不应该是您应用的主要活动,否则在禁用它后,用户将无法返回您的应用。
CarHome非常不同 - 当Android处于不同的UI模式时(在用于汽车模式的汽车中或用于桌面模式的桌面底座上),当用户按下主页以便他们可以启动时,将启动不同的Intent在那种环境中有一个不同的“家”。如果您没有编写汽车模式主屏幕,则不应使用此功能。