Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何覆盖android主页按钮_Java_Android - Fatal编程技术网

Java 如何覆盖android主页按钮

Java 如何覆盖android主页按钮,java,android,Java,Android,我一直在搜索Android文档和stackoverflow,我读到的大多数答案都说你不能禁用或覆盖Android主页按钮 问题是有一些已知的应用程序正在这样做: 这就是我想要的: 家长加载应用程序,然后将设备交给孩子。孩子只能看到设备上已批准的应用程序(我知道如何执行此部分)。如果他们从我的应用程序的主启动程序屏幕加载已批准的应用程序-如果他们按下home(主页)按钮,它会将他们带回我的应用程序,而不会带回设备主屏幕。如果用户在我的应用程序中按下home(主页)按钮,则不会发生任何事情。

我一直在搜索Android文档和stackoverflow,我读到的大多数答案都说你不能禁用或覆盖Android主页按钮

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

这就是我想要的:

家长加载应用程序,然后将设备交给孩子。孩子只能看到设备上已批准的应用程序(我知道如何执行此部分)。如果他们从我的应用程序的主启动程序屏幕加载已批准的应用程序-如果他们按下home(主页)按钮,它会将他们带回我的应用程序,而不会带回设备主屏幕。如果用户在我的应用程序中按下home(主页)按钮,则不会发生任何事情。后退按钮也是如此


我正在寻找正确的解决方案,在覆盖主页按钮的情况下复制儿童护理应用程序的功能。我该怎么做?

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

@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;
}

希望有帮助。

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

如果有人仍然感兴趣,您可以尝试将其放入
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>

....

在活动中重写该方法

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

这是一个有趣的问题,从可用性的角度来看,这听起来是个坏主意,可能会让很多用户感到沮丧。祝你好运找到你想要的答案这里真的不需要任何示例代码。这是一个简单的活动,清单中有launcher标志。然后在
onStart
事件中决定要运行的其他应用程序(您的活动与其他活动)。作为标准和安全预防措施,Home按钮不需要onKeyDown。您好!这不起作用,因为文档中说:
此密钥由框架处理,永远不会传递到应用程序。
:/