Android 11.0 禁止系統界面下拉狀態欄和通知欄 手機 平板 車載 TV 投影 通用

1、禁止systemUI下拉狀態欄和通知欄的核心代碼部分

framework/base/packages/apps/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
framework/base/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
framework/base/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
/framework/base/packages/apps/SystemUI/src/com/android/systemui/statusbar/notification/NotificationStackScrollLayout.java

2、禁止systemUI下拉狀態欄和通知欄,考慮需要在鎖屏狀態下,和未鎖屏狀態下

2.1 沒有鎖屏狀態下通過
KeyguardViewMediator.java來在adjustStatusBarLocked()中通過設置StatusBarManager的flag
屬性來設置禁用下拉狀態欄,然后在開機以后就禁用下拉狀態欄達到禁用的目的

framework/base/packages/apps/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
private void handleShow(Bundle options) {Trace.beginSection("KeyguardViewMediator#handleShow");final int currentUser = KeyguardUpdateMonitor.getCurrentUser();if (mLockPatternUtils.isSecure(currentUser)) {mLockPatternUtils.getDevicePolicyManager().reportKeyguardSecured(currentUser);}synchronized (KeyguardViewMediator.this) {if (!mSystemReady) {if (DEBUG) Log.d(TAG, "ignoring handleShow because system is not ready.");return;} else {if (DEBUG) Log.d(TAG, "handleShow");}mHiding = false;mWakeAndUnlocking = false;setShowingLocked(true);mKeyguardViewControllerLazy.get().show(options);resetKeyguardDonePendingLocked();mHideAnimationRun = false;adjustStatusBarLocked();userActivity();mUpdateMonitor.setKeyguardGoingAway(false);mKeyguardViewControllerLazy.get().setKeyguardGoingAwayState(false);mShowKeyguardWakeLock.release();}private void adjustStatusBarLocked(boolean forceHideHomeRecentsButtons,
boolean forceClearFlags) {
if (mStatusBarManager == null) {
mStatusBarManager = (StatusBarManager)
mContext.getSystemService(Context.STATUS_BAR_SERVICE);
}if (mStatusBarManager == null) {
Log.w(TAG, "Could not get status bar manager");
} else {
// Disable aspects of the system/status/navigation bars that must not be re-enabled by
// windows that appear on top, ever
int flags = StatusBarManager.DISABLE_NONE;// TODO (b/155663717) After restart, status bar will not properly hide home button
//  unless disable is called to show un-hide it once first
if (forceClearFlags) {
mStatusBarManager.disable(flags);
}if (forceHideHomeRecentsButtons || isShowingAndNotOccluded()) {
if (!mShowHomeOverLockscreen || !mInGestureNavigationMode) {
flags |= StatusBarManager.DISABLE_HOME;
}
flags |= StatusBarManager.DISABLE_RECENT;
}if (DEBUG) {
Log.d(TAG, "adjustStatusBarLocked: mShowing=" + mShowing + " mOccluded=" + mOccluded
+ " isSecure=" + isSecure() + " force=" + forceHideHomeRecentsButtons
+  " --> flags=0x" + Integer.toHexString(flags));
}mStatusBarManager.disable(flags);
}
}

在調用show 顯示狀態欄的時候,adjustStatusBarLocked() 可以設置 mStatusBarManager 的flag為StatusBarManager.DISABLE_EXPAND表示禁用下拉狀態欄

@@ -2168,7 +2168,7 @@ public class KeyguardViewMediator extends SystemUI {+ " isSecure=" + isSecure() + " force=" + forceHideHomeRecentsButtons+  " --> flags=0x" + Integer.toHexString(flags));}
-
+            flags = StatusBarManager.DISABLE_EXPAND;mStatusBarManager.disable(flags);}}

2.2 StatusBar 中不顯示通知信息的圖片:

在鎖屏通知欄中去掉顯示通知的部分,達到禁用下拉狀態欄的功能
主要實現如下:
framework/base/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java

@@ -159,7 +159,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueueif ((state1 & DISABLE_NOTIFICATION_ICONS) != 0) {hideNotificationIconArea(animate);} else {
-                showNotificationIconArea(animate);
+                //showNotificationIconArea(animate);
+                hideNotificationIconArea(animate);}}

2.3 鎖屏是 禁止狀態欄下拉
在鎖屏狀態下禁用下拉狀態欄 通知界面NotificationPanelView.java 去掉下拉開展狀態欄部分的功能

路徑

framework/base/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -908,7 +908,7 @@ public class NotificationPanelView extends PanelView implementsif (!isFullyCollapsed()) {handleQsDown(event);}
-        if (!mQsExpandImmediate && mQsTracking) {
+        if (!mKeyguardShowing && !mQsExpandImmediate && mQsTracking) {onQsTouch(event);if (!mConflictingQsExpansionGesture) {return true;
@@ -1114,6 +1114,9 @@ public class NotificationPanelView extends PanelView implements}private void setQsExpanded(boolean expanded) {
+        if (mKeyguardShowing) {
+            return;
+        }boolean changed = mQsExpanded != expanded;if (changed) {mQsExpanded = expanded;
@@ -1508,7 +1511,7 @@ public class NotificationPanelView extends PanelView implementsif (!mQsExpansionEnabled || mCollapsedOnDown) {return false;}
-        View header = mKeyguardShowing ? mKeyguardStatusBar : mQs.getHeader();
+        View header = /*mKeyguardShowing ? mKeyguardStatusBar :*/ mQs.getHeader();final boolean onHeader = x >= mQsFrame.getX()&& x <= mQsFrame.getX() + mQsFrame.getWidth()&& y >= header.getTop() && y <= header.getBottom();

2.4 鎖屏狀態隱藏通知欄的顯示
禁止顯示通知欄

/framework/base/packages/apps/SystemUI/src/com/android/systemui/statusbar/notification/NotificationStackScrollLayout.java
@@ -717,7 +717,8 @@ public class NotificationStackScrollLayout extends ViewGroup}private void setMaxLayoutHeight(int maxLayoutHeight) {
-        mMaxLayoutHeight = maxLayoutHeight;
+        //mMaxLayoutHeight = maxLayoutHeight;
+        mMaxLayoutHeight = 0;mShelf.setMaxLayoutHeight(maxLayoutHeight);updateAlgorithmHeightAndPadding();}
@@ -2590,9 +2591,10 @@ public class NotificationStackScrollLayout extends ViewGroup} else {mTopPaddingOverflow = 0;}
-        setTopPadding(ignoreIntrinsicPadding ? topPadding : clampPadding(topPadding),
-                animate);
-        setExpandedHeight(mExpandedHeight);
+        //setTopPadding(ignoreIntrinsicPadding ? topPadding : clampPadding(topPadding),
+        //        animate);
+        //setExpandedHeight(mExpandedHeight);
+        setTopPadding(-500,animate);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718920.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718920.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718920.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數字化轉型導師堅鵬:金融機構數字化運營

金融機構數字化運營 課程背景&#xff1a; 很多金融機構存在以下問題&#xff1a; 不清楚數字化運營對金融機構發展有什么影響&#xff1f; 不知道如何提升金融機構數字化運營能力&#xff1f; 不知道金融機構如何開展數字化運營工作&#xff1f; 課程特色&#xff1a;…

盤點全網哪些超乎想象的高科技工具?有哪些免費開源的最新AI智能工具?短視頻自媒體運營套裝?

盤點全網哪些超乎想象的高科技工具&#xff1f;有哪些免費開源的最新AI智能工具&#xff1f;短視頻自媒體運營套裝&#xff1f; 自媒體主要用來干什么&#xff1f; 可以通過短視頻吸引更多的觀眾和粉絲&#xff0c;提升自媒體賬號的影響力和知名度。 短視頻形式更加生動、直觀…

使用C++界面框架ImGUI開發一個簡單程序

簡介 ImGui 是一個用于C的用戶界面庫&#xff0c;跨平臺、無依賴&#xff0c;支持OpenGL、DirectX等多種渲染API&#xff0c;是一種即時UI&#xff08;Immediate Mode User Interface&#xff09;庫&#xff0c;保留模式與即時模式的區別參考保留模式與即時模式。ImGui渲染非常…

關于企業數字化轉型:再認識、再思考、再出發

近年來&#xff0c;隨著國家數字化政策不斷出臺、新興技術不斷進步、企業內生需求持續釋放&#xff0c;數字化轉型逐步成為企業實現高質量發展的必由之路&#xff0c;成為企業實現可持續發展乃至彎道超車的重要途徑。本文重點分析當下阻礙企業數字化轉型的難點&#xff0c;提出…

SPC 之 I-MR 控制圖

概述 1924 年&#xff0c;美國的休哈特博士應用統計數學理論將 3Sigma 原理運用于生產過程中&#xff0c;并發表了 著名的“控制圖法”&#xff0c;對產品特性和過程變量進行控制&#xff0c;開啟了統計過程控制新時代。 什么是控制圖 控制圖指示過程何時不受控制&#xff…

通過 Jenkins 經典 UI 創建一個基本流水線

通過 Jenkins 經典 UI 創建一個基本流水線 點擊左上的 新建任務。 在 輸入一個任務名稱字段&#xff0c;填寫你新建的流水線項目的名稱。 點擊 流水線&#xff0c;然后點擊頁面底部的 確定 打開流水線配置頁 點擊菜單的流水線 選項卡讓頁面向下滾動到 流水線 部分 在 流水線 …

TransactionTemplate的使用【事務】

1.1 事務 spring給我們提供了編程式事務以及聲明式兩種事務。比如我們日常寫的基于XML配置的事務管理以及基于注解的方式都是一個聲明式事務&#xff0c;但是有很多同學在使用注解方式的時候會出現很多時候事務不生效的問題&#xff0c;可能是同學沒有完全理解到其中的原理。這…

微信小程序開發學習筆記《19》uni-app框架-配置小程序分包與輪播圖跳轉

微信小程序開發學習筆記《19》uni-app框架-配置小程序分包與輪播圖跳轉 博主正在學習微信小程序開發&#xff0c;希望記錄自己學習過程同時與廣大網友共同學習討論。建議仔細閱讀uni-app對應官方文檔 一、配置小程序分包 分包可以減少小程序首次啟動時的加載時間 為此&#…

YOLOV5學習

【目標檢測】yolov5模型詳解-CSDN博客

如何使用生成式人工智能探索視頻博客的魅力?

視頻博客&#xff0c;尤其是關于旅游的視頻博客&#xff0c;為觀眾提供了一種全新的探索世界的方式。通過圖像和聲音的結合&#xff0c;觀眾可以身臨其境地體驗到旅行的樂趣和發現的喜悅。而對于內容創作者來說&#xff0c;旅游視頻博客不僅能分享他們的旅行故事&#xff0c;還…

模擬算法題練習(一)(掃雷,灌溉,回文日期)

目錄 模擬算法介紹&#xff1a; &#xff08;一、掃雷&#xff09; &#xff08;二、灌溉&#xff09; &#xff08;三、回文日期&#xff09; 有一說一這題大佬的題解是真的強 模擬算法介紹&#xff1a; 模擬算法通過模擬實際情況來解決問題&#xff0c;一般容易理解但是實…

算法基本思想(結尾附上記憶口訣)

算法基本思想(結尾附上記憶口訣) 貪心分治枚舉動態回溯遞歸&#xff08;兄弟思想-遞推&#xff09; 這篇文章說的這些思想網上一大堆,可以不看。直接關注結尾自創口訣&#xff0c;希望給你提供一點幫助。 遞歸 概述 在計算機科學中是指一種通過重復將問題分解為同類的子問…

信息檢索技術如何改變了人們獲取知識的方式?

第一個肯定是改變了獲取信息的渠道&#xff0c;以前需要到圖書館&#xff0c;書籍&#xff0c;報紙&#xff0c;雜志等方式獲取信息&#xff0c;現在只需要通過上網搜索一下&#xff0c;就能獲取到信息&#xff0c;并且比自己查的更廣泛全面。當然&#xff0c;互聯網業帶來了海…

貪心刷題1-部分背包

題目來源&#xff1a;【深基12.例1】部分背包問題 - 洛谷 參考書目&#xff1a;《深入淺出程序設計競賽&#xff08;基礎篇&#xff09;》 解題思路&#xff1a;這道題是部分背包&#xff0c;如果金幣不能完整的放入是可以分割的。題目中有若干堆金幣&#xff0c;每堆金幣有一…

mac電腦使用pyinstaller打包python腳本

pyinstaller -F template.py 出現報錯"AssertionError: Executable contains code signature!" 移除簽名 codesign --remove-signature /Users/f7692281/PycharmProjects/TPtestlist/transmit_v6.0.py 打包命令 pyinstaller --windowed transmit_v6.0.py pyinst…

【js】事件循環之promise的async/await與setTimeout

什么是事件循環 事件循環又叫消息循環&#xff0c;是瀏覽器渲染主線程的工作方式。 瀏覽器開啟一個永不停止的for循環&#xff0c;每次循環都會從消息隊列中取任務&#xff0c;其他線程只需要在合適的時候將任務加入到消息隊列的末尾。 過去分為宏任務和微任務&#xff0c;現…

wordpress模板官網

移民wordpress主題 移民代辦wordpress主題&#xff0c;適合做海外移民咨詢的代理公司搭建wordpress企業官方網站使用。 https://www.jianzhanpress.com/?p5130 夏令營wordpress主題 綠色夏令營wordpress主題&#xff0c;適合做夏令營或戶外拓展的公司搭建wordpress官方網站…

D2587A高壓大電流DC-DC——專為反激式、升壓和正向轉換器應用而設計的單片集成電路

1、概述 D2587A穩壓器是專為反激式、升壓和正向轉換器應用而設計的單片集成電路。該器件提供四種不同的輸出電壓版本&#xff1a;3.3V、5V、12V 和可調節電壓。這些穩壓器需要的外部元器件很少&#xff0c;因此具有成本效益&#xff0c;并且易于使用。該電源開關是一款5A NPN器…

面試經典150題——最小棧

?Life is a journey, theres no right or wrong. 1. 題目描述 2. 題目分析與解析 2.1 思路一 看到題目的一瞬間&#xff0c;有沒有注意到 常數時間內檢索到最小元素的棧&#xff0c;那說明我們肯定需要把最小元素的下標存儲起來&#xff0c;這樣才能在常數時間內找到。 其…

網工學習 DHCP配置-接口模式

網工學習 DHCP配置-接口模式 學習DHCP總是看到&#xff0c;接口模式、全局模式、中繼模式。理解起來也不困難&#xff0c;但是自己動手操作起來全是問號。跟著老師視頻配置啥問題沒有&#xff0c;自己組建網絡環境配置就是不通&#xff0c;悲催。今天總結一下我學習接口模式的…