禁用应用中Android系统的导航栏(特别是平板)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                禁用应用中Android系统的导航栏(特别是平板)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                ???? 由于公司項目是在全屏下的,所有界面都是全屏,唯有彈出提示框的時候,會出現系統的導航欄,由于是平板,導航欄信息比較多,該項目屬于永不讓用戶進入原系統的項目。所以有導航欄,就讓用戶有了機會進入后臺。
??? 本今天在網上找了很多資料,試了很多方法,終于可以把導航欄的圖表隱藏掉,點擊事件也禁用了。唯有不足之處就是下面還有一個黑條,不管了,講究用了。
?
public class StatusUtils { //disable為是否禁用導航欄true為禁用public static void statusBarDisable(boolean disable,Context mContext) { try { int DISABLE_NAVIGATION = StatusBarManager.DISABLE_EXPAND| StatusBarManager.DISABLE_BACK| StatusBarManager.DISABLE_NOTIFICATION_ICONS| StatusBarManager.DISABLE_NOTIFICATION_ALERTS| StatusBarManager.DISABLE_NOTIFICATION_TICKER| StatusBarManager.DISABLE_SYSTEM_INFO| StatusBarManager.DISABLE_NAVIGATION| StatusBarManager.DISABLE_CLOCK;int DISABLE_NONE = 0x00000000; //獲得ServiceManager類 Class<?> ServiceManager = Class .forName("android.os.ServiceManager"); //獲得ServiceManager的getService方法 Method getService = ServiceManager.getMethod("getService", java.lang.String.class); //調用getService獲取RemoteService Object oRemoteService = getService.invoke(null,"statusbar"); //獲得IStatusBarService.Stub類 Class<?> cStub = Class .forName("com.android.internal.statusbar.IStatusBarService$Stub"); //獲得asInterface方法 Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class); //調用asInterface方法獲取IStatusBarService對象 Object oIStatusBarService = asInterface.invoke(null, oRemoteService); //獲得disable()方法 Method disableMethod = oIStatusBarService.getClass().getMethod("disable",int.class,IBinder.class,String.class); //調用disable()方法 if(disable){ disableMethod.invoke(oIStatusBarService,DISABLE_NAVIGATION,new Binder(),mContext.getPackageName()); }else{ disableMethod.invoke(oIStatusBarService,DISABLE_NONE,new Binder(),mContext.getPackageName()); } }catch (Exception e) { Log.e("status", e.toString(), e); } } }?這用了反射機制,調用StatusManager 類的disable方法,將導航的功能禁用。該類是@hide的,對外是不可見,不可用,所以只能用反射了。接下來要做的就是給應用添加權限
?<uses-permission android:name="android.permission.STATUS_BAR"/>
 ?<uses-permission android:name="android.permission.DISABLE_STATUS_BAR"/> 
 
在manifest中添加android:sharedUserId="android.uid.system"屬性
最后應用要簽名:用signapk
 java -jar signapk.jar certificate.pem key.pk8 your-app.apk? your-signed-app.apk
最后就Ok了。
 
? 
 
總結
以上是生活随笔為你收集整理的禁用应用中Android系统的导航栏(特别是平板)的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 信息安全数学基础(近世代数部分)
 - 下一篇: php 类学习,php的类学习(一)