Android:虚拟按键/导航键遮挡内容的解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android:虚拟按键/导航键遮挡内容的解决方案相关的知识,希望对你有一定的参考价值。

参考技术A

方案1:
这种方案底部依旧会保留虚拟导航按键。但不保留状态栏

方案2:
这种方案不会保留底部虚拟导航按键。也不保留状态栏

方案3:
这种方案在很多手机中都不生效。
这种方案会保留底部虚拟按键,也会保留状态栏

参考:
https://www.zhihu.com/question/35292413
http://blog.csdn.net/MrZhang_happy/article/details/70057429

本文到此结束,谢谢观看!
如有不足,敬请指正!

Android开发关闭虚拟按钮底部导航条

   在Android开发中,遇到了一系列大大小小的问题,其中一个就是屏蔽底部实体键,我找了很多的博客也尝试了许许多多的方法,但始终不能屏蔽 HOME键,后来看见一篇博客说在Android 4.0以后,屏蔽底部HOME键必须反编译,修改Android底部原生代码,于是我便放弃了。废话不多说,我先分享一个屏蔽Android虚拟按键的方法,以及最简单的屏蔽Android的Back按钮,适合所有版本(未测试,感觉是这样):

1. Android 屏蔽Back按键

  只需要重写 onKeyDown 方法就可以了,代码如下:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Toast.makeText(MainActivity.this, "·µ»Ø¼üÒѱ»½ûÓÃ...", Toast.LENGTH_SHORT)
                    .show();
            return true; // return true 和 false 我都试过,都能屏蔽,原因还未知,希望知道的可以告诉我一下,谢谢
        }return super.onKeyDown(keyCode, event);
    }

 

2. Android 隐藏虚拟导航条(需要系统权限)

  需要在 AndroidManifest.xml 中加入以下权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

  然后是关闭底部导航条的代码,我封装成了一个类,只需要在 onCreate 方法里调用该方法就行,该类如下:

package com.jd.nanapptwo.utils;

import android.os.Build;

/**
 * 关闭显示导航条
 */
public class CloseBarUtil {

    /**
     * 关闭底部导航条
     */
    public static void closeBar() {
        try {
            // 需要root 权限
            Build.VERSION_CODES vc = new Build.VERSION_CODES();
            Build.VERSION vr = new Build.VERSION();
            String ProcID = "79";
            if (vr.SDK_INT >= vc.ICE_CREAM_SANDWICH) {
                ProcID = "42"; // ICS AND NEWER
            }
            // 需要root 权限
            Process proc = Runtime.getRuntime().exec(
                    new String[]{
                            "su",
                            "-c",
                            "service call activity " + ProcID
                                    + " s16 com.android.systemui"}); // WAS 79
            proc.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 显示底部导航条
     */
    public static void showBar() {
        try {
            Process proc = Runtime.getRuntime().exec(
                    new String[]{"am", "startservice", "-n",
                            "com.android.systemui/.SystemUIService"});
            proc.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

希望以上方法会对你们有帮助。

以上是关于Android:虚拟按键/导航键遮挡内容的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Android底部弹窗漏出底部导航栏/未能遮挡/底部透明了/未置底的问题

如何将android屏幕下方的虚拟按键隐藏掉

Android 11 Recent按键流程

Android 11 Recent按键流程

Android 11 Recent按键流程

求教Android去掉虚拟按键全屏显示的方法