在安卓4.0及以上系统中禁用主页按钮

3

我正在尝试用自己的应用程序替换原始锁屏。
在我的代码中,我想禁用Home按钮。
我知道如何在Android 2.3及以下版本中实现此操作,
但相同的代码在Android 4.0+中无法使用(按Home按钮返回桌面)

最近,我发现了一款名为MiHome的应用程序,它具有自己的锁屏并且能够禁用Home按钮。
有人知道它是如何实现这一操作的吗???

3个回答

15

除非将您的应用程序作为主屏幕,否则无法拦截Android上的主页按钮。这是出于安全原因,以防恶意应用程序通过覆盖所有可以退出的按钮来接管您的设备。主页按钮是唯一可以确保能够离开任何应用程序的方法。

如果您想处理主页按钮,请实现一个主屏幕。


3

这种方法在Android 4.0.3上不起作用。commonsware在第二个链接中发表的评论。 - Raghunandan
抱歉。看起来在ICS上没有实现这个功能,除非实现一个虚假的主屏幕。我已经更新了答案。 - Madushan

0

试试这个

   params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.MATCH_PARENT,
                    WindowManager.LayoutParams.MATCH_PARENT,
                    WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
                    PixelFormat.TRANSLUCENT);
            params.gravity = Gravity.TOP;

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            } else {
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            }
    mOverlay = (RelativeLayout) inflater
                    .inflate(R.layout.main, (ViewGroup) null);

    mOverlay.setFitsSystemWindows(false);
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
            mWindowManager = (WindowManager) context
                    .getSystemService(Context.WINDOW_SERVICE);
            mWindowManager.addView(mOverlay, params);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接