6

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

试过 - 不起作用

说不可能

问题是有已知的应用程序正在这样做:

儿童护理

儿童乐园

这就是我要的:

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

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

4

4 回答 4

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>
于 2014-01-24T00:17:16.440 回答
1

您需要做的是创建自己的启动器,A) 启动另一个启动器或 B) 启动您的活动。发射器只需要足够聪明就可以知道要发射哪个。因此,如果您在您的应用程序中并单击“主页”,它将进入启动器代码并查看您的应用程序正在运行并决定开始您的活动。但是,它决定您的应用程序没有运行,那么它应该启动另一个启动器。如果您删除活动动画,那么它将显得无缝。

于 2013-09-12T23:40:00.213 回答
0

在活动中覆盖方法

  @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case android.R.id.home:
                    onBackPressed();
                    break;
                default:
                    return super.onOptionsItemSelected(item);
            }
            return false;
        }
于 2015-11-08T17:47:11.703 回答
-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;
}

希望能帮助到你。

于 2013-09-12T23:35:51.820 回答