繁体   English   中英

如何覆盖android主页按钮

[英]How to override android home button

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

尝试 - 不起作用

说不可能

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

儿童护理

儿童广场

这就是我要的:

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

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

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

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

在活动中覆盖该方法

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

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

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

希望能帮助到你。

暂无
暂无

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

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