android403隐藏statusbar.docx
- 文档编号:23274286
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:6
- 大小:17.82KB
android403隐藏statusbar.docx
《android403隐藏statusbar.docx》由会员分享,可在线阅读,更多相关《android403隐藏statusbar.docx(6页珍藏版)》请在冰豆网上搜索。
android403隐藏statusbar
android4.0.3隐藏statusbar
1:
修改frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIService.java
importandroid.content.IntentFilter;[java]viewplaincopy@OverridepublicvoidonCreate(){//Pickstatusbarorsystembar.IWindowManagerwm=IWindowManager.Stub.asInterface(ServiceManager.getService(Context.WINDOW_SERVICE));try{SERVICES[0]=wm.canStatusBarHide()R.string.config_statusBarComponent:
R.string.config_systemBarComponent;}catch(RemoteExceptione){Slog.w(TAG,"Failingcheckingwhetherstatusbarcanhide",e);}finalintN=SERVICES.length;mServices=newSystemUI[N];for(inti=0;i<N;i++){Classcl=chooseClass(SERVICES[i]);Slog.d(TAG,"loading:
"+cl);try{mServices[i]=(SystemUI)cl.newInstance();}catch(IllegalAccessExceptionex){thrownewRuntimeException(ex);}catch(InstantiationExceptionex){thrownewRuntimeException(ex);}mServices[i].mContext=this;Slog.d(TAG,"running:
"+mServices[i]);mServices[i].start();}//addbyxiaogeIntentFilterintentFilter=newIntentFilter();intentFilter.addAction(Intent.ACTION_DISPLAY_STATUS_BAR);intentFilter.addAction(Intent.ACTION_HIDE_STATUS_BAR);registerReceiver(mStatusBarReceiver,intentFilter);}//addbyxiaogeBroadcastReceivermStatusBarReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(intent!
=null){Stringaction=intent.getAction();finalintN=SERVICES.length;for(inti=0;i<N;i++){Slog.d(TAG,"invoke:
"+mServices[i]+"'sonReceive()");mServices[i].onReceive(action);}}}};
2:
修改frameworks/base/core/java/android/content/Intent.java
[java]viewplaincopy//addbyxiaoge@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)publicstaticfinalStringACTION_DISPLAY_STATUS_BAR="android.intent.action.DISPLAY_STATUS_BAR";@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)publicstaticfinalStringACTION_HIDE_STATUS_BAR="android.intent.action.HIDE_STATUS_BAR";//addends
3:
修改frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java
[java]viewplaincopy/**Copyright(C)2010TheAndroidOpenSourceProject**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat**http:
//www.apache.org/licenses/LICENSE-2.0**Unlessrequiredbyapplicablelaworagreedtoinwriting,software*distributedundertheLicenseisdistributedonan"ASIS"BASIS,*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.*SeetheLicenseforthespecificlanguagegoverningpermissionsand*limitationsundertheLicense.*/packagecom.android.systemui.statusbar;importcom.android.systemui.statusbar.SeviceSocket;importandroid.content.ComponentName;importandroid.app.Notification;importandroid.app.NotificationManager;importandroid.app.PendingIntent;importjava.io.File;importjava.io.FileReader;importjava.util.Timer;importjava.util.TimerTask;importandroid.os.Handler;importandroid.os.Message;importandroid.os.ServiceManager;importandroid.app.Notification;importandroid.app.PendingIntent;importandroid.app.ActivityManager;importandroid.app.Service;importandroid.content.Context;importandroid.content.Intent;importandroid.content.res.Resources;importandroid.graphics.PixelFormat;importandroid.os.IBinder;importandroid.os.RemoteException;importandroid.os.ServiceManager;importandroid.util.Slog;importandroid.util.Log;importandroid.view.Display;importandroid.view.Gravity;importandroid.view.View;importandroid.view.ViewGroup;importandroid.view.WindowManager;importandroid.view.WindowManagerImpl;importjava.util.ArrayList;importcom.android.internal.statusbar.IStatusBarService;importcom.android.internal.statusbar.StatusBarIcon;importcom.android.internal.statusbar.StatusBarIconList;importcom.android.internal.statusbar.StatusBarNotification;importcom.android.systemui.SystemUI;importcom.android.systemui.R;publicabstractclassStatusBarextendsSystemUIimplementsCommandQueue.Callbacks{staticfinalStringTAG="StatusBar";privatestaticfinalbooleanSPEW=false;//addbyxiaogeprivateViewmStatusBarView;privateintmStatusBarHeight;privateWindowManager.LayoutParamsmStatusBarLayoutParams;protectedCommandQueuemCommandQueue;protectedIStatusBarServicemBarService;//F/r/i/e/n/d/l/y/A/R/MprivatestaticSeviceSocketseviceSocket=null;privateNotificationManagermyNotiManager;//Up-callmethodsprotectedabstractViewmakeStatusBarView();protectedabstractintgetStatusBarGravity();publicabstractintgetStatusBarHeight();publicabstractvoidanimateCollapse();privateDoNotDisturbmDoNotDisturb;//{{F-r-i-e-n-d-l-y-A-R-MprivatevoidsetStatusIcon(inticonId,Stringtext){IntentnotifyIntent=newIntent();notifyIntent.setComponent(newComponentName("3gdialup","3gdialup.ActivityMain"));notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);PendingIntentappIntent=PendingIntent.getActivity(mContext,0,notifyIntent,0);NotificationmyNoti=newNotification();myNoti.icon=iconId;myNoti.tickerText=text;myNoti.defaults=Notification.DEFAULT_LIGHTS;myNoti.setLatestEventInfo(mContext,"3GNetworkStatus",text,appIntent);myNotiManager.notify(0,myNoti);}privatevoidremoveStatusIcon(){myNotiManager.cancelAll();}privateintlastNetworkStatus=-1;privatebooleanisConnectService=false;privatefinalintCONNECT_TO_SERVICE_MSG=100;privatefinalintREQUEST_NETSTATUS_MSG=101;privateTimertimerToConnService=newTimer();privateTimertimerToRequestStatus=newTimer();privateHandlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){caseCONNECT_TO_SERVICE_MSG:
timerToConnService.cancel();seviceSocket.connectToService();break;caseREQUEST_NETSTATUS_MSG:
seviceSocket.sendRequest("REQUESTNETSTATUS\n");seviceSocket.recvResponse();break;}super.handleMessage(msg);}};privateTimerTasktaskConnectService=newTimerTask(){publicvoidrun(){Messagemessage=newMessage();message.what=CONNECT_TO_SERVICE_MSG;handler.sendMessage(message);}};privateTimerTasktaskRequestNetStatus=newTimerTask(){publicvoidrun(){Messagemessage=newMessage();message.what=REQUEST_NETSTATUS_MSG;handler.sendMessage(message);}};privatevoidprocessNETStatusResponse(Stringresponse){String[]results=response.split("");if(response.startsWith("RESPONSECONNECTOK")){seviceSocket.sendRequest("REQUEST3GAUTOCONNECTGETSTATUS");seviceSocket.recvResponse();}elseif(response.startsWith(newString("RESPONSE3GAUTOCONNECT"))&&results.length==6){if(Integer.parseInt(results[2])==1&&results[3].startsWith(newString("3GNET"))){timerToRequestStatus.schedule(taskRequestNetStatus,1,3000);}else{seviceSocket.disconnect();}}elseif(response.startsWith(newString("RESPONSENETSTATUS"))&&results.length>=5){if(results[2].startsWith(newString("DOWN"))){if(lastNetworkStatus!
=0){removeStatusIcon();}lastNetworkStatus=0;}elseif(results[2].startsWith(newString("UP"))&&results.length==8){if(lastNetworkStatus!
=1){setStatusIcon(com.android.internal.R3g,"Connected.(FriendlyARM-3G)");}lastNetworkStatus=1;}}}//}}publicvoidstart(){//Firstsetupourviewsandstuff.Viewsb=makeStatusBarView();//F/r/i/e/n/d/l/y/A/R/MmyNotiManager=(NotificationManager)mContext.getSystemService(Context.NOTIFICATION_SERVICE);seviceSocket=newSeviceSocket(newSeviceSocket.RecvCallBack(){publicvoidresponseIncoming(Stringresponse){processNETStatusResponse(response);}});//ConnectintothestatusbarmanagerserviceStatusBarIconListiconList=newStatusBarIconList();ArrayList<IBinder>notificationKeys=newArrayList<IBinder>();ArrayList<StatusBarNotification>notifications=newArrayList<StatusBarNotification>();mCommandQueue=newCommandQueue(this,iconList);mBarService=IStatusBarService.Stub.asInterface(ServiceManager.getService(Context.STATUS_BAR_SERVICE));int[]switches=newint[7];ArrayList<IBinder>binders=newArrayList<IBinder>();try{mBarService.registerStatusBar(mCommandQueue,iconList,notificationKeys,notifications,switches,binders);}catch(RemoteExceptionex){//Ifthesystemprocessisn'ttherewe'redoomedanyway.}disable(switches[0]);setSystemUiVisibility(switches[1]);topAppWindowChanged(switches[2]!
=0);//StatusBarManagerServicehasabackupofIMEtokenandit'srestoredhere.setImeWindowStatus(binders.get(0),switches[3],switches[4]);setHardKeyboardStatus(switches[5]!
=0,switches[6]!
=0);//SetuptheinitialiconstateintN=iconList.size();intviewIndex=0;for(inti=0;i<N;i++){StatusBarIconicon=iconList.getIcon(i);if(icon!
=null){addIcon(iconList.getSlot(i),i,viewIndex,icon);viewIndex++;}}//SetuptheinitialnotificationstateN=notificationKeys.size();if(N==notifications.size()){for(inti=0;i<N;i++){addNotification(notificationKeys.get(i),notifications.get(i));}}else{Log.wtf(TAG,"Notificationlistlengthmismatch:
keys="+N+"notifications="+notifications.size());}//Putuptheviewfinalintheight=getStatusBarHeight();mStatusBarHeight=height;//addbyxiaogefinalWindowManager.LayoutParamslp=newWindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,height,WindowManager.LayoutParams.TYPE_STATUS_BAR,WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING|WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,//WeuseapixelformatofRGB565forthestatusbartosavememorybandwidthand//toensurethatthelayercanbehandledbyHWComposer.Onsomedevicesth
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android403 隐藏 statusbar