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

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

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

 

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了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring使用注解@Scheduled执行定时任务

最近做的项目中遇到了用spring中Schedule注解执行定时任务的功能&#xff0c;这里简单记录一下。 首先在applicationContext.xml中进行配置&#xff1a; xmlns 加下面的内容 xsi:schemaLocation加下面的内容 最后我们的task任务扫描注解 需要注意的几点&#xff1a; 1、spring的…

关于dialog的一点东西

今天开发一个上传照片的小功能&#xff0c;对弹出的Dialog的一些用法查找了下&#xff0c;记录下来以后备用。 1.设置dialog标题居中: 在style中配置如下代码 <style name"UploadDialog" parent"android:style/Theme.Dialog"> <item …

DIY Ruby CPU 分析 Part II

【编者按】作者 Emil Soman&#xff0c;Rubyist&#xff0c;除此之外竟然同时也是艺术家&#xff0c;吉他手&#xff0c;Garden City RubyConf 组织者。本文是 DIY Ruby CPU Profiling 的第二部分。本文系 OneAPM 工程师编译整理。 在第一部分中我们学习了 CPU 分析的含义和进行…

spring注解 @Scheduled(cron = 0 0 1 * * *)的使用来实现定时的执行任务

<span style"font-size:14px;">初次接触定时类的小程序&#xff0c;还是走了很多的弯路&#xff0c;如今终于搞定了&#xff0c;总结如下&#xff1a;</span> <span style"font-size:14px;">import com.activityvip.api.service.Securit…

在Oracle里,表的别名不能用as,列的别名可以用as

列的别名也可以不用as&#xff0c;如&#xff1a;select t.a xxx from table t在Oracle数据库中&#xff0c;数据表别名是不能加as的&#xff0c;例如&#xff1a; select a.appname from appinfo a;-- 正确 select a.appname from appinfo as a;-- 错误 注释&#xff1a;这…

Android自定义RadioButton

今天公司项目中需要完成一个效果&#xff0c;首先是要用自己的图片&#xff0c;然后文字在按钮图片的左边。 1.使文字在图片的左边&#xff0c;有两种方法&#xff1a; 第一种&#xff0c;设置radioButton的属性&#xff1a; <span style"font-size:24px;">a…

MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔

做了一个简答的小项目&#xff0c;其中遇到了一些数据库的sql使用技巧总结如下&#xff1a; DATE_ADD() 函数向日期添加指定的时间间隔。 当前表所有数据都往后增加一天时间&#xff1a; UPDATE ACT_BlockNum SET CreateTime DATE_ADD(CreateTime, INTERVAL 1 DAY); 当前…

Android蓝牙4.0的数据通讯

我在两家公司都用到了app与BLE设备通讯&#xff0c;当时也是什么都不懂&#xff0c;在网上各种搜索&#xff0c;各种查资料&#xff0c;总算弄出来了。在这里记录下来&#xff0c;希望对有需要的人有些帮助。 1.检测手机是否支持蓝牙4.0&#xff08;一般手机4.3以上的android系…

荐 Intellij IDEA创建Maven Web项目(带有webapp文件夹目录的项目)

转载自&#xff1a;点击打开链接 在创建项目中&#xff0c;IDEA提供了很多项目模板&#xff0c;比如Spring MVC模板&#xff0c;可以直接创建一个基于Maven的Spring MVC的demo&#xff0c;各种配置都已经设定好了&#xff0c;直接编译部署就可以使用。 最开始自己创建maven we…

iOS设计模式 - 迭代器

iOS设计模式 - 迭代器 原理图 说明 提供一种方法顺序访问一个聚合对象中的各种元素&#xff0c;而又不暴露该对象的内部表示。 源码 https://github.com/YouXianMing/iOS-Design-Patterns // // Node.h // IteratorPattern // // Created by YouXianMing on 15/10/26. // …

Android程序杀死自己的进程和其他程序进程方法

1.获取程序进程ID&#xff1b; int pidandroid.os.Process.myPid(); android.os.Process..killProcess(pid); 2.杀死其他程序进程&#xff1b; ActivityManager manager(ActivityManager)getSystemService(ACTIVITY_SERVICE); manager.killBackgroundProcesses("packa…

maven依赖关系中Scope的作用

Dependency Scope 在POM 4中&#xff0c;<dependency>中还引入了<scope>&#xff0c;它主要管理依赖的部署。目前<scope>可以使用5个值&#xff1a; * compile&#xff0c;缺省值&#xff0c;适用于所有阶段&#xff0c;会随着项目一起发布。 * provided&…

如何运行ruby代码

第一种&#xff0c;ruby -e 在命令行中运行下面命令&#xff0c;-e的意思是&#xff0c;把后面的字符串当作脚本执行 ruby -e "print hello" 使用irb交互控制台 在命令行输入irb hello worldxingooxingoo-Lenovo:~/workspace/RubyTest$ irb irb(main):001:0> p &q…

使用ViewPager制作Android引导界面

1.涉及Android知识点&#xff1a; ViewPager组件、Handler机制、SharedPreferences。 2.开发实践&#xff1a; a.布局文件设计。 第一个引导界面one.xml&#xff0c;另外两个布局文件类似。 <?xml version"1.0" encoding"utf-8"?> <LinearLay…

6、控件样式模板和使用

WPF控件模板 潜移默化学会WPF(样式篇)---改造CheckBox&#xff0c;全新metro风格 WPF CheckBox 自定义样式 继续聊WPF控件——自定义CheckBox控件外观 用WPF自定义CheckBox的样式 [wpf教程-自定义样式的checkbox开关控件 http://www_suchso.com/projecteactual/wpf-jiaocheng-c…