Android 屏蔽\取消(禁止)下拉通知栏包括二级菜单下拉

server/2024/11/29 1:47:40/

修改方案很简单,就是直接返回类型进行屏蔽掉,让下拉效果失去,有些修改建议一起修改,不然会有意想不到的冲突,单独修改需要验证再验证,确保无其他bug产生。

有些版本可能方法的位置不一样,需要搜索一番才能尝试修改。

第一种情况,依据版本看panelsEnabled()方法的位置,if判断后其他代码不用注释掉

/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java

 boolean panelsEnabled() {
  if(true)  return false;  //*/add start
 return (mDisabled1 & StatusBarManager.DISABLE_EXPAND) == 0 && !ONLY_CORE_APPS;
    }

 第二种:

/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java

 @Override
    public boolean panelEnabled() {
        if(true) return false;  //*/add start
        return mCommandQueue.panelsEnabled();
    }

第三种:禁止解锁状态的亮屏中下拉通知菜单【单个验证有效】

vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar$ 

CommandQueue.java

// TODO(b/118592525): add multi-display support if needed.
    public boolean panelsEnabled() {
        if(true) return false;  //*/add start
        final int disabled1 = getDisabled1(DEFAULT_DISPLAY);
        final int disabled2 = getDisabled2(DEFAULT_DISPLAY);
        return (disabled1 & StatusBarManager.DISABLE_EXPAND) == 0
                && (disabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) == 0
                && !ONLY_CORE_APPS;
    }
 

第四种:不加载下拉高度;禁止锁屏状态的亮屏中下拉通知菜单 +  【单个验证有效】

/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java 

private void setQsExpansion(float height) {
        if(true) return;  //*/add start

height = Math.min(Math.max(height, mQsMinExpansionHeight), mQsMaxExpansionHeight);
        mQsFullyExpanded = height == mQsMaxExpansionHeight && mQsMaxExpansionHeight != 0;

 

第五种:如何删除屏蔽二次下拉菜单 +【同上第四个有点修改差异】

/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java 

private void setQsExpansion(float height) {
        //height = Math.min(Math.max(height, mQsMinExpansionHeight), mQsMaxExpansionHeight);高度直接等于后者
        height = mQsMinExpansionHeight;//*/add start

        mQsFullyExpanded = height == mQsMaxExpansionHeight && mQsMaxExpansionHeight != 0;
        if (height > mQsMinExpansionHeight && !mQsExpanded && !mStackScrollerOverscrolling) {
            setQsExpanded(true);
        } else if (height <= mQsMinExpansionHeight && mQsExpanded) {
            setQsExpanded(false);
            if (mLastAnnouncementWasQuickSettings && !mTracking && !isCollapsing()) {
                announceForAccessibility(getKeyguardOrLockScreenString());
                mLastAnnouncementWasQuickSettings = false;
            }
        }

 


http://www.ppmy.cn/server/137657.html

相关文章

如何用Aicbo轻松转换多种艺术风格?

Aicbo能够处理从古典到现代的各种艺术风格。例如&#xff0c;它可以将一幅印象派画作转换为具有立体主义特征的作品&#xff0c;或者将一幅中国山水画的风格应用到西方风景画上。这种跨文化、跨时代的风格转换&#xff0c;为艺术家们提供了一个全新的创作视角。 Aicbo 支持多种…

Ubuntu 命令行教程介绍

目录 Ubuntu 命令行教程 1. 打开终端 2. 导航文件系统 3. 文件操作 4. 查看文件内容 5. 查找文件 6. 安装软件包 7. 用户和权限管理 8. 查看系统信息 9. 连接远程服务器 10. 日志文件管理 Ubuntu 命令行教程 Ubuntu 是一款非常流行的 Linux 发行版&#xff0c;以其…

oc的若干方法转为swift 请求不执行

GPT帮忙翻译的代码&#xff0c;就是不执行某句话 if let maxPageDic UserDefaults.standard.object(forKey: KDocumentProgressTecentMaxPage) as? [String: Any], !maxPageDic.isEmpty { if let maxPage maxPageDic["maxPage"] { if type(of: maxPage) Int.self…

为什么音频采样率通常是44.1kHz?

计算机中操作和存储只能是类似10101011这样的二进制数字&#xff0c;对于自然界中音频原始信号则为模拟信号&#xff0c;如下一个1kHz的音频信号&#xff0c;如果要转化为数字音频信号&#xff0c;则需要采样&#xff0c; 通常我们会采用44.1kHz的频率来进行采样&#xff0c;在…

【进阶sql】复杂sql收集及解析【mysql】

开发时会出现&#xff0c;必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串&#xff…

JavaScript网页设计案例:智慧社区可视化大屏的实现

智慧社区作为城市智能化的重要体现&#xff0c;通过数据可视化大屏能够直观地展示社区内的各种信息&#xff0c;提高管理效率和居民生活质量。本文将详细介绍如何使用JavaScript结合HTML和CSS开发一个智慧社区可视化大屏的案例。 项目背景 智慧社区可视化大屏主要用于展示社区…

Lucene数据写入流程

Lucene数据写入及倒排数据缓存组织是一个复杂但有序的过程&#xff0c;它涉及到多个组件和内存结构的高效利用。以下是对Lucene数据写入和倒排数据缓存组织的详细解析。 Lucene数据写入流程 Lucene的数据写入流程主要涉及到文档的创建、索引的添加以及最终写入磁盘的过程。以…

Android 利用责任链模式来实现 解析不同的json对象

1. 创建解析类 class WebSocketParserChain {private val parsers mutableListOf<WebSocketDataParser>()fun addParser(parser: WebSocketDataParser): WebSocketParserChain {parsers.add(parser)return this}fun parse(text: String): WebSocketResponseBaseBean<…