5

我想home button在我的应用程序运行时禁用 android 设备。

我尝试了以下代码,但没有帮助:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {
            Toast.makeText(this, "You pressed the home button!",
                    Toast.LENGTH_LONG).show();
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

     @Override
     protected void onNewIntent(Intent intent) {
     super.onNewIntent(intent);
     if (Intent.ACTION_MAIN.equals(intent.getAction())) {
     Log.i("MyLauncher", "onNewIntent: HOME Key");

     }
     }
4

4 回答 4

13

如果适合您的要求,我认为这可以以另一种方式完成。通过将您的活动创建为家庭活动。如果您想禁用主页按钮并在按下主页按钮时将您的自定义应用程序活动显示为启动器。只需在清单中为您想要启动器的活动添加这些行。

<activity
            android:name="com.example.TempActivity"
            android:clearTaskOnLaunch="true"
            android:excludeFromRecents="true"
            android:launchMode="singleTask"
            android:screenOrientation="landscape"
            android:stateNotNeeded="true" >
             <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />

            </intent-filter>
</activity>

添加并运行您的应用程序后。如果用户按下主页按钮,Android 会询问您想要哪个启动器作为主页。然后你必须选择你的应用程序启动器,而不仅仅是一次。

如果您想完全禁用用户,以便他无法移动到另一个屏幕,然后使用 NoTitlebar 将主题设置为全屏。

于 2014-11-25T07:08:44.773 回答
8

您可以使用Android-HomeKey-Locker禁用 HOME KEY 和其他系统键(如 BACK KEY 和 MENU KEY)

笔记

似乎该解决方案仅适用于具有硬 Home 键的设备

希望这对您的申请有所帮助。谢谢。

于 2014-03-23T06:12:47.883 回答
1

您不能禁用主页按钮。

除非您将应用程序设为主屏幕,否则无法拦截 Android 上的主页按钮。这是出于安全原因,因此恶意应用程序无法通过覆盖所有可以退出的按钮来接管您的设备。

主页按钮是导航到主屏幕的一种肯定的快捷方式。

如果要处理 HOME 按钮,请实现主屏幕。

无法禁用特定 Android 设备上的主页按钮

通过 commonsware 检查答案

于 2013-06-19T06:06:06.510 回答
1

您可以使用以下方法禁用 android 中的 Home 键:

@Override
public void onAttachedToWindow() {
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();
}
于 2014-08-07T13:31:09.913 回答