【Android开发关闭虚拟按钮底部导航条】学向勤中得,萤窗万卷书。这篇文章主要讲述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源代码解析之--&gt;Log日志
- Android二维码功能实现,在程序内嵌入ZXing项目(转)
- android studio中使用recyclerview小白篇
- Android API Guides---Storage Access Framework
- Windows App开发之开发准备
- Android系统编译环境初始化时Product产品的import-nodes过程
- Android设计中的尺寸问题
- Android布局中match_parent和fill_parent的差别
- Android 图片压缩的方法大全