在android6.0项目中,因需要做全屏处理,故在此整理出全屏时禁止通知栏下滑的代码,希望可以帮助到也有如此困惑的人。

    1.在onCreate中添加://设置全屏

        requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

    2.在onResume()函数中添加://进入activity时,设置禁止通知栏不滑

        Settings.System.putInt(this.getContentResolver(),

Settings.System.FULL_SCREEN_EXPAND_STATUSBAR, 0);

    

    3.在onPause()函数中添加://离开activity时,恢复通知栏下滑

        Settings.System.putInt(this.getContentResolver(),

Settings.System.FULL_SCREEN_EXPAND_STATUSBAR, 1);

    4.在frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.javar的updateSystemUiViSiBilityLw()函数中添加://此代码我添加在tmpVisibility = updateLightStatusBarLw(tmpVisibility);后,有可能其它人的项目代码有改动,在需要此代码的请酌情添加至合适位置。

        final int visibility;

         if(Settings.System.getInt(mContext.getContentResolver(),

            Settings.System.FULL_SCREEN_EXPAND_STATUSBAR, 1) == 0) {

             visibility = tmpVisibility;

          }else{

             visibility = updateSystemBarsLw(win, mLastSystemUiFlags,tmpVisibility);

        }

    5.在frameworks/base/core/java/android/provider/Settings.java中添加://定义FULL_SCREEN_EXPAND_STATUSBAR

        public static final String FULL_SCREEN_EXPAND_STATUSBAR = "full_screen_expand_statusbar";

    6.在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java中添加://与上方onPause()中意义基本相同,未深究

      systemSettings.insertSettingLocked(Settings.System.FULL_SCREEN_EXPAND_STATUSBAR, "1",SettingsState.SYSTEM_PACKAGE_NAME);

说明:为保证添加了FULL_SCREEN_EXPAND_STATUSBAR不会给系统其它地方造成影响,上述6处的代码请完整添加,否则有可能引起未知错误!