Android 8.1 如何隐藏状态栏

需求:进入某个应用就隐藏状态栏
代码路径:
frameworks/base/services/core/java/com/android/server/policy/PolicyControl.java
在PolicyControl.java文件getSystemUiVisibility()和getWindowFlags()方法中根据包名来隐藏状态栏

public static int getSystemUiVisibility(WindowState win, LayoutParams attrs) {
       attrs = attrs != null ? attrs : win.getAttrs();
       int vis = win != null ? win.getSystemUiVisibility() : attrs.systemUiVisibility;
   packageName = win != null ? win.getOwningPackage() : attrs.packageName;
   allShowFullScreen = isFullScreenApp(packageName);
   if(allShowFullScreen){
      if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(attrs)) {
         vis |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
               | View.SYSTEM_UI_FLAG_FULLSCREEN
               | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
         vis &= ~(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
               | View.STATUS_BAR_TRANSLUCENT);
      }
      
   }else{
      vis &= ~(View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.STATUS_BAR_TRANSLUCENT
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
   }
   if(allShowFullScreen){
      if (sImmersiveNavigationFilter != null && sImmersiveNavigationFilter.matches(attrs)) {
         vis |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
               | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
               | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
         vis &= ~(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
               | View.NAVIGATION_BAR_TRANSLUCENT);
      }
   }else{
      vis &= ~(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
               | View.SYSTEM_UI_FLAG_IMMERSIVE
               | View.NAVIGATION_BAR_TRANSLUCENT
               | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
               | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
   }
       
       return vis;
   }
   public static int getWindowFlags(WindowState win, LayoutParams attrs) {
      attrs = attrs != null ? attrs : win.getAttrs();
      int flags = attrs.flags;
packageName = attrs != null ? attrs.packageName : win.getOwningPackage();
allShowFullScreen = isFullScreenApp(packageName);
if(allShowFullScreen){
   if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(attrs)) {
      flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
      flags &= ~(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
            | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
   }
}else{
   flags &= ~(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
         | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
         | WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
if(allShowFullScreen){
   if (sImmersiveNavigationFilter != null && sImmersiveNavigationFilter.matches(attrs)) {
      flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
   }
}else{
   flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
}
      
      return flags;
  }
private static boolean isFullScreenApp(String packageName){
   if("包名".equals(packageName)){
      return true;
   }
   return false;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值