android4.0屏蔽导航按钮的方法

最近做个ANDROID项目,需要屏蔽平板底层的导航按钮,难点是APP里不仅有自己写的activity,还有调用别的APP(GSF)里的activity里,不是很好实现,先将已有的不完善的解决方法写出来。
  所有的实现都在NEXSU 7上测试的,别的机子没测过,不保证有用。
  下面介绍的第五种方法是现在最好的解决方法。通过反射机制获取隐藏服务StatusBarService,调用它的disable()方法来屏蔽导航按钮。
  一. 自己写的activity屏蔽导航按钮
  1. 获取到界面上的一个view
  2. 调用API
  java代码
  1.     view.setSystemUiVisibility 
  2. (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
复制代码
  3. 不过Google认为导航按钮太重要了,当你点击屏幕的时候,导航按钮会再次显示出来。
  我尝试的监听导航按钮显示事件,当收到显示事件后,再次调用上面的API来隐藏,不过这样显示有问题,屏幕有抖动。
  java代码
  1.     view.setOnSystemUiVisibilityChangeListener(mSystemUiVisibilityChangeListener);

  2.   iew.OnSystemUiVisibilityChangeListener 
  3. mSystemUiVisibilityChangeListener
  4.   = new View.OnSystemUiVisibilityChangeListener() {
  5.   @Override
  6.   public void onSystemUiVisibilityChange(int vis) {
  7.   if ((vis & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0) { 
  8. //当前状态是显示,隐藏它
  9.   view.setSystemUiVisibility (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
  10.   }
  11.   }
复制代码
  4. 由于目前还没有好的解决上面的问题,我就不去掉导航按钮整个一栏,而是仅仅去掉导航按钮
  java代码
  1.     int INVISBLE = 
  2. 0x00400000|0x00200000|0x01000000|0x00010000;//这几个整数参数API是不开放的

  3.   //INVISBLE = View.STATUS_BAR_DISABLE_EXPAND | 
  4. View.STATUS_BAR_DISABLE_RECENT|View.STATUS_BAR_DISABLE_BACK|View.STATUS_BAR_DISABLE_HOME
  5.   view.setSystemUiVisibility(INVISBLE);
复制代码
  运行效果图如下,最下面的导航栏已经没有导航按钮了,只有一个圈圈,无法触控。

  二. 调用第三方APK里的activity
  由于需要GOOGLE的登录界面,我就调用了GSF提供的登录activity,方法如下:
  java代码
  1.     Intent localIntent = new 
  2. Intent(com.google.android.accounts.AccountIntro);

  3.   localIntent.putExtra("firstRun", true);
  4.   localIntent.putExtra("allowSkip", true);
  5.   startActivityForResult(localIntent, requestCode);
复制代码
  但是当登录界面弹出对话框时,导航按钮都显示出来了,这个是客户接受不了的,要我必须改掉,目前还没有解决掉(已经解决)。问题界面如下

  目前想出来的方法是将下面导航栏都去掉,有三种方法,当必须都已经ROOT了。
  两种方法屏蔽掉导航按钮,不需要ROOT。
  第一种:
  修改system/build.prop 添加系统属性 qemu.hw.mainkeys=1,重启。
  缺点: 需要重启,所以就没有采用。
  第二种:
  删除system/app/SystemUI.apk ,这个就是用来显示系统导航栏的APK,但在需要的时候,将APK在放到app目录下,启动服务就行了。
  在APK开始运行的时候,将SystemUI.apk移动另一个地方,当APK运行结束的时候,在将SystemUI.apk移回原位,启动SystemUIService服务。


  原文链接:http://www.eyeandroid.com/thread-16939-1-1.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值