【聲明:】本文是作者(蘑菇v5)原創(chuàng)莲组,版權(quán)歸作者 蘑菇v5所有诊胞,侵權(quán)必究。本文首發(fā)在簡(jiǎn)書(shū)锹杈。如若轉(zhuǎn)發(fā)撵孤,請(qǐng)注明作者和來(lái)源地址!未經(jīng)授權(quán)竭望,嚴(yán)禁私自轉(zhuǎn)載邪码!
一、前言:
如果是系統(tǒng)級(jí)應(yīng)用咬清,也就是手機(jī)廠家植入的應(yīng)用霞扬,比較簡(jiǎn)單,修改frameworks
里代碼枫振, 可以參考:基于Android6.0源碼修改屏蔽系統(tǒng)下方的虛擬按鍵以及上方的狀態(tài)欄。但是如果是在應(yīng)用層上的萤彩,這里使用StatusBarManager
實(shí)現(xiàn)此功能粪滤,StatusBarManager
是Android
許多隱藏Service
中的其中之一,該Service
不對(duì)外提供雀扶,如果我們要使用的話可以通過(guò)反射來(lái)獲取其方法杖小。因?yàn)闄?quán)限問(wèn)題無(wú)法使用(如果一定要使用必須具有系統(tǒng)簽名)肆汹,只能做在定制機(jī)上,如果你想做在第三方應(yīng)用上發(fā)布予权,其設(shè)備是沒(méi)有辦法使用隱藏的方法
二昂勉、準(zhǔn)備:
- 簽名文件
- APP程序
三、實(shí)現(xiàn)步驟:
1.在AndroidManifest.xml中添加權(quán)限
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
<uses-permission android:name="android.permission.STATUS_BAR"/>
2.在相應(yīng)的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
是不同版本下禁止下拉的整形標(biāo)識(shí)扫腺,如果我們想還原下拉岗照,只需要將整形標(biāo)識(shí)改為0x00000000
即可
3.簽名
需要簽名,屬于系統(tǒng)操作笆环,特定簽名文件如下:
簽名
4.簽名命令
java -jar signapk.jar platform.x509.pem platform.pk8 app-release.apk newApp.apk