由于公司项目是在全屏下的,所有界面都是全屏,唯有弹出提示框的时候,会出现系统的导航栏,由于是平板,导航栏信息比较多,该项目属于永不让用户进入原系统的项目。所以有导航栏,就让用户有了机会进入后台。

本今天在网上找了很多资料,试了很多方法,终于可以把导航栏的图表隐藏掉,点击事件也禁用了。唯有不足之处就是下面还有一个黑条,不管了,讲究用了。

public class StatusUtils {
//disable为是否禁用导航栏true为禁用
public static void statusBarDisable(boolean disable,Context mContext) {    try {  int DISABLE_NAVIGATION = StatusBarManager.DISABLE_EXPAND| StatusBarManager.DISABLE_BACK| StatusBarManager.DISABLE_NOTIFICATION_ICONS| StatusBarManager.DISABLE_NOTIFICATION_ALERTS| StatusBarManager.DISABLE_NOTIFICATION_TICKER| StatusBarManager.DISABLE_SYSTEM_INFO| StatusBarManager.DISABLE_NAVIGATION| StatusBarManager.DISABLE_CLOCK;int DISABLE_NONE = 0x00000000;  //获得ServiceManager类  Class<?> ServiceManager = Class  .forName("android.os.ServiceManager");  //获得ServiceManager的getService方法  Method getService = ServiceManager.getMethod("getService", java.lang.String.class);  //调用getService获取RemoteService  Object oRemoteService = getService.invoke(null,"statusbar");  //获得IStatusBarService.Stub类  Class<?> cStub = Class  .forName("com.android.internal.statusbar.IStatusBarService$Stub");  //获得asInterface方法  Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class);  //调用asInterface方法获取IStatusBarService对象  Object oIStatusBarService = asInterface.invoke(null, oRemoteService);  //获得disable()方法  Method disableMethod = oIStatusBarService.getClass().getMethod("disable",int.class,IBinder.class,String.class);  //调用disable()方法  if(disable){  disableMethod.invoke(oIStatusBarService,DISABLE_NAVIGATION,new Binder(),mContext.getPackageName());     }else{  disableMethod.invoke(oIStatusBarService,DISABLE_NONE,new Binder(),mContext.getPackageName());     }             }catch (Exception e) {            Log.e("status", e.toString(), e);           }  }
}

这用了反射机制,调用StatusManager 类的disable方法,将导航的功能禁用。该类是@hide的,对外是不可见,不可用,所以只能用反射了。

接下来要做的就是给应用添加权限

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

在manifest中添加android:sharedUserId="android.uid.system"属性

最后应用要签名:用signapk
java -jar signapk.jar certificate.pem key.pk8 your-app.apk  your-signed-app.apk

最后就Ok了。

禁用应用中Android系统的导航栏(特别是平板)相关推荐

  1. 关于Android系统隐藏导航栏的两种方法

    关于Android系统隐藏导航栏的两种方法 在NXP的imx6q和全志的A40I上试过 1.frameworks/base/core/res/res/values/dimens.xml中修改 < ...

  2. Android系统开启导航栏NavigationBar(虚拟按键)

    导航栏NavigationBar 源码部分: frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManag ...

  3. Android隐藏导航栏按键,Android如何控制导航栏单个按键的显隐状态

    我们都知道Android系统的导航栏通常有三个按键,分别是BACK, HOME, APP_SWITCH. 网上很多有关导航栏和状态栏显隐的文章,但几乎都是控制导航栏或状态栏所有按键同时显示或消失,如果 ...

  4. Android状态栏和导航栏透明和沉浸式模式

    最近在App上需要对状态栏进行相关的设置,在网上看了些文章,像郭神的沉浸式那篇博客对我启发蛮大,但是对状态栏的设置,包括隐藏,透明,颜色设置等,并没有比较系统的概念,实现方式不止一种,有操作Windo ...

  5. android MIPI屏 导航栏丢失

    /***************************************************************************** android MIPI屏 导航栏丢失* ...

  6. 固定导航栏android,Android 状态栏和导航栏的真终极解决方案

    去年我写过一篇文章,透明状态栏和导航栏的终极解决方案,并在 Github 上开源了代码,https://github.com/Zackratos/UltimateBar,其实在那之后,我一直对这个项目 ...

  7. Android 10 修改导航栏的位置

    Android 10 修改导航栏的位置 代码路径: frameworks/base/servicescore/java/com/android/server/wm/DisplayPolicy.java ...

  8. Android 华为虚拟导航栏适配

    Android 华为虚拟导航栏适配 在写界面的时候 然后发现在界面最底下的几行文字 正好被虚拟导航栏遮挡住了,不滑动还看不到底下的文字,所以想隐去这些导航栏. 采用下面的代码将DecorView中的属 ...

  9. uniapp隐藏页面顶部导航栏和手机系统顶部导航栏

    1.隐藏页面导航栏: pages.json文件  在"style":{ "app-plus":{ "titleNview": false } ...

最新文章

  1. IIS的应用程序池优化方法
  2. docker安装 kuboard v3 - 内建用户库
  3. 自定义工具类:工具类介绍
  4. Qt 第一步 HelloWorld 的第一个程序
  5. Spark 101:它是什么,它做什么以及为什么起作用
  6. CentOS6.4系统启动失败故障排查
  7. 微博拟全球发售1100万股 发售价不超388港元
  8. LaTeX Package cleveref: cleveref must be loaded after hyperref!. 的解决方案
  9. shell脚本之循环语句
  10. 磁盘被写保护怎么解除
  11. 2021年度上海公务员考试公告(11月05日开启)
  12. 用原生JS实现3D轮播效果
  13. oracle mysql sqlserver对比_Mysql、Oracle、SqlServer的JDBC连接实现和对比(提供驱动包)...
  14. 什么是物联卡,物联卡注意事项
  15. linux hostname的配置方法
  16. app error login.php,自定义错误Think\Think::appError 设计有问题!!
  17. 你知道遥控器的通信原理吗?
  18. [Node] Node.js Webpack和打包过程
  19. UIKeyboardTypeNumberPad和丢失的return键
  20. python什么意思d_python里d是什么意思

热门文章

  1. 前端学习(1963)vue之电商管理系统电商系统之控制级联选择框的选择范围
  2. 前端学习(1695):前端系列javascript之问题解答
  3. 前端学习(649):编译和解释性语言的区别
  4. spring mvc学习(35):restful的put
  5. java 序列化 protobuf_java序列化机制之protobuf(快速高效跨语言)
  6. vue-环境变量和模式
  7. 逃跑吧少年服务器临时维护中,逃跑吧少年—逃跑吧少年5月30日更新 主动技能解锁...
  8. channelsftp的put_java实现sftp客户端上传文件以及文件夹的功能代码
  9. java1.8 新特性
  10. redis启动警告解决