Android开发实现应用层面屏蔽状态栏的方法小结
发布时间 - 2026-01-11 02:58:43 点击率:次本文实例讲述了Android开发实现应用层面屏蔽状态栏的方法。分享给大家供大家参考,具体如下:

一、由于StatusBarManager在SDK中没有提供,所以需要使用反射来调用该类的方法
代码部分如下:
Object service = getSystemService("statusbar");
try {
Class <?> statusBarManager = Class.forName("Android.app.StatusBarManager");
Method expand = statusBarManager.getMethod("disable",int.class);
expand.invoke (service,0×00000001);
} catch (Exception e) {
e.printStackTrace();
}
禁用通知栏需要添加以下权限并使用系统签名:
<uses-permission android:name="android.permission.STATUS_BAR"/> <uses-permission android:name="android.permission.DISABLE_STATUS_BAR"/>
网上资料中有提到如果没有使用系统签名则会报如下错误
Caused by: Java.lang.SecurityException: StatusBarManagerService: Neither user 10072 nor current process has android.permission.STATUS_BAR.
在使用系统签名之前需要
1.在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"
2.修改Android.mk文件,加入LOCAL_CERTIFICATE:=platform
让程序运行到系统进程中
Android中使应用程序获得系统签名权限方法:
1.需要在Android系统源码的环境下用make来编译
(1)在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"
(2)修改Android.mk文件,加入LOCAL_CERTIFICATE:=platform
(3)使用mm命令来编译生成APK即可
2.不需要在系统源码环境下编译
(1)在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"
(2)使用eclipse编译出APK文件,此时的APK文件不可用
(3)用压缩软件打开APK文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件
(4)使用目标系统的platform密钥来重新给APK文件签名。首先要找到密钥文件,如"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件,然后用Android提供的SignApk工具来签名,该工具源码在"build\tools\signapk"下,用法是"signapk platform.x509.pem platform.pk8 input.apk output.apk"
原理:
首先加入android:sharedUserId="android.uid.system"这个属性,通过SharedUserId拥有同一个User ID的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,就具有相应的权限了。
但是只是加入UID还不够,这时候的APK是无法安装的,因为签名不符。程序想要运行在系统进程中还要有目标系统的platform key,就是上面第二个方法中的platform.pk8和platform.x509.pem两个文件。用这两个key签名后apk才真正可以放入系统进程中,第一个方法的LOCAL_CERTIFICATE:=platform其实就是用这两个key签名
这也有一个问题,就是这样生成的程序只有在原始的Android系统或自己编译的系统中才可用,因为这样的系统才可以拿到platform.pk8和platform.x509.pem两个文件,要是别家公司的Android系统连安装都安装不了。目前只是整理了资料,还没有进行实际开发,之后如果有实际应用这部分内容,会将最后结果整理发布。
二、如果是系统级应用,也就是手机厂家植入的应用,可以使用disable(int)的方法来进行屏蔽,参数如上源码五个参数之一即可。但是如果是在应用层上的,disable方法因为权限问题无法使用(如果一定要使用必须具有系统签名)。这个时候可以使用collapse()方法,现在的小米锁屏和360锁屏都是使用该方法,具体代码如下:
public void disableStatusBar(){
try {
Object service = getSystemService("statusbar");
Class<?> claz = Class.forName("android.app.StatusBarManager");
Method expand = claz.getMethod("collapse");
expand.invoke(service);
} catch (Exception e) {
e.printStackTrace();
}
}
重写activity的onWindowfocuschanged方法,执行如上操作即可。 但是此种方法有严重的适配性问题,不同的系统下的回滚方法名不一样,需要对所有版本进行适配,非常繁琐。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 应用层面
# 屏蔽
# 状态栏
# android 动态控制状态栏显示和隐藏的方法实例
# Android 去掉状态栏的方法汇总
# Android 实现沉浸式状态栏的方法
# Android自定义状态栏颜色与应用标题栏颜色一致
# Android实现的状态栏定制和修改方法
# Android 取得状态栏、任务栏高度的小例子
# Android之沉浸式状态栏的实现方法、状态栏透明
# Android 4.4以上"沉浸式"状态栏效果的实现方法
# Android 状态栏虚拟导航键透明效果的实现方法
# Android编程实现禁止StatusBar下拉的方法
# Android编程实现禁止状态栏下拉的方法详解
# 应用程序
# 这两个
# 可以使用
# 都是
# 进阶
# 是在
# 还没有
# 相关内容
# 第一个
# 多个
# 要有
# 中有
# 要在
# 感兴趣
# 这也
# 这部
# 第二个
# 给大家
# 才可以
# 如果没有
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建FTP站点实现文件共享?
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
如何快速重置建站主机并恢复默认配置?
个人网站制作流程图片大全,个人网站如何注销?
如何获取免费开源的自助建站系统源码?
javascript中闭包概念与用法深入理解
利用 Google AI 进行 YouTube 视频 SEO 描述优化
如何在阿里云虚拟服务器快速搭建网站?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
如何快速生成高效建站系统源代码?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
,网页ppt怎么弄成自己的ppt?
b2c电商网站制作流程,b2c水平综合的电商平台?
想要更高端的建设网站,这些原则一定要坚持!
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel怎么使用artisan命令缓存配置和视图
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
如何快速生成可下载的建站源码工具?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Android 常见的图片加载框架详细介绍
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
JS去除重复并统计数量的实现方法
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何使用Collections进行数据处理?(实用方法示例)
如何在自有机房高效搭建专业网站?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
高端网站建设与定制开发一站式解决方案 中企动力
高防服务器租用指南:配置选择与快速部署攻略
如何批量查询域名的建站时间记录?
如何快速建站并高效导出源代码?
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
C++用Dijkstra(迪杰斯特拉)算法求最短路径
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
如何快速搭建高效简练网站?
html如何与html链接_实现多个HTML页面互相链接【互相】
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
开心动漫网站制作软件下载,十分开心动画为何停播?

