WindowManagerService.java添加如下函数
public void showStatusBarHeight(boolean enable){
//mPolicy引用PhoneWindowManager对象
mPolicy.setStatusBarHeightShow(enable);
}
frameworks/base/core/java/android/view/IWindowManager.aidl添加
void showStatusBarHeight(boolean enable);
WindowManagerPolicy.java添加
public void setStatusBarHeightShow(boolean enabled);
PhoneWindowManager.java添加
public void setStatusBarHeightShow(boolean enabled){
if(enabled){
Resources mResources = mContext.getResources();
mStatusBarHeight =
mResources.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
} else{
mStatusBarHeight = 0;
}
}
PhoneStatusBar.java
makeStatusBarView()函数内修改
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(ACTION_DEMO);
//wwd add
filter.addAction("android.intent.action.DISPLAY_STATUS_BAR");
filter.addAction("android.intent.action.HIDE_STATUS_BAR");
//wwd add
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
else if (action.equals("android.intent.action.DISPLAY_STATUS_BAR")) {
mStatusBarWindow.setVisibility(View.VISIBLE);
try {
mWindowManagerService.showStatusBarHeight(true);
} catch (RemoteException ex) {
}
} else if (action.equals("android.intent.action.HIDE_STATUS_BAR")) {
Log.i("wwd","mStatusBarView.isAttachedToWindow");
mStatusBarWindow.setVisibility(View.GONE);
try {
mWindowManagerService.showStatusBarHeight(false);
} catch (RemoteException ex) {
}
}
}
到此framework内代码添加完毕,在自己需要的时候发送广播”android.intent.action.DISPLAY_STATUS_BAR”和”android.intent.action.HIDE_STATUS_BAR”就能全局显示和隐藏statusbar。