【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在简书。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!
一、前言:
如果是系统级应用,也就是手机厂家植入的应用,比较简单,修改frameworks
里代码, 可以参考:基于Android6.0源码修改屏蔽系统下方的虚拟按键以及上方的状态栏。但是如果是在应用层上的,这里使用StatusBarManager
实现此功能,StatusBarManager
是Android
许多隐藏Service
中的其中之一,该Service
不对外提供,如果我们要使用的话可以通过反射来获取其方法。因为权限问题无法使用(如果一定要使用必须具有系统签名),只能做在定制机上,如果你想做在第三方应用上发布,其设备是没有办法使用隐藏的方法
二、准备:
- 签名文件
- APP程序
三、实现步骤:
1.在AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
<uses-permission android:name="android.permission.STATUS_BAR"/>
2.在相应的activity中添加
@Override
public void onWindowFocusChanged(boolean hasFocus) {
disableStatusBar();
super.onWindowFocusChanged(hasFocus);
}
public void disableStatusBar(){
Object service = getSystemService("statusbar");
try {
Class<?> statusBarManager = Class.forName("android.app.StatusBarManager");
Method expand = statusBarManager.getMethod("disable", int.class);
//判断版本大小
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
expand.invoke(service, DISABLE_EXPAND);
}else {
expand.invoke(service, DISABLE_EXPAND_LOW);
}
} catch (Exception e) {
e.printStackTrace();
}
}
注意:0x00010000
和0x00000001
是不同版本下禁止下拉的整形标识,如果我们想还原下拉,只需要将整形标识改为0x00000000
即可
3.签名
需要签名,属于系统操作,特定签名文件如下:
4.签名命令
java -jar signapk.jar platform.x509.pem platform.pk8 app-release.apk newApp.apk