如何覆盖android主页按钮

时间:2013-09-12 23:32:02

标签: java android

我一直在搜索Android文档和stackoverflow,我正在阅读的大部分答案都说你无法禁用或覆盖Android主页按钮。

Tried - does not work

Says not possible

问题是有些已知的应用正在执行此操作:

Kids Care

Kids Place

这就是我想要的:

父母加载应用程序然后将设备提供给孩子。孩子只能看到设备上已批准的应用程序(我知道如何做这部分)。如果他们从我的应用程序的主启动器屏幕加载已批准的应用程序 - 如果他们按下主页按钮,则会将他们带回我的应用程序而不是回到设备主屏幕。如果用户从我的应用程序按下主页按钮 - 什么都不应该发生。后退按钮也是如此。

我正在寻找适当的解决方案,在覆盖主页按钮时复制Kids Care应用程序的功能。我该怎么做?

4 个答案:

答案 0 :(得分:2)

如果有人仍然感兴趣,您可以尝试将其放入AndroidManifest.xml

中的主要活动中
<activity
    ...
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
        ....
    </intent-filter>
</activity>

答案 1 :(得分:1)

您需要做的是创建自己的启动器,A)启动另一个启动器或B)启动您的活动。发射器必须足够聪明才能知道要启动哪个。因此,如果您在应用中并点击“主页”,它将进入启动器代码并看到您的应用正在运行并决定开始您的活动。然而,它决定你的应用程序没有运行,那么它应该启动另一个启动器。如果您删除活动动画,则它将显示为无缝动画。

答案 2 :(得分:0)

在活动中覆盖方法

  @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case android.R.id.home:
                    onBackPressed();
                    break;
                default:
                    return super.onOptionsItemSelected(item);
            }
            return false;
        }

答案 3 :(得分:-2)

永远不要覆盖主页按钮,但这对我来说可以覆盖后退按钮.-

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    boolean res = super.onKeyDown(keyCode, event);

    switch (keyCode) {
    case KeyEvent.KEYCODE_HOME: {
        // Your Home button logic;
        return false;
    }

    return res;
}

希望它有所帮助。