[RK3399][Android7.1] 调试笔记 --- 移除/删除Settings的Preference的三种方法小结

2023-05-16

Platform: RK3399-MID
OS: Android 7.1.2
Kernel: v4.4.83

需求:

整理一下移除/删除Settings的Preference三种方法;

方法一:对于 PreferenceScreen采用removePreference或者removeAll删除;

上图图1中的“字体大小”以及图2的“系统”称为一级节点,图2的“字体大小”称为二级节点;

先附上xml文件;

packages/apps/Settings/res/xml/display_settings.xml

        <PreferenceScreen
                android:key="font_size"
                android:title="@string/title_font_size"
                android:fragment="com.android.settings.accessibility.ToggleFontSizePreferenceFragment"
                settings:keywords="@string/keywords_display_font_size" />

        <com.android.settings.display.ScreenZoomPreference
                android:key="screen_zoom"
                android:title="@string/screen_zoom_title"
                settings:keywords="@string/screen_zoom_keywords" />

        <DropDownPreference
                android:key="auto_rotate"
                android:summary="%s"
                android:title="@string/display_auto_rotate_title" />

packages/apps/Settings/res/xml/accessibility_settings.xml

    <PreferenceCategory
            android:key="system_category"
            android:title="@string/accessibility_system_title">

        <PreferenceScreen
            android:fragment="com.android.settings.accessibility.CaptionPropertiesFragment"
            android:key="captioning_preference_screen"
            android:title="@string/accessibility_captioning_title" />

        <PreferenceScreen
            android:fragment="com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragment"
            android:key="screen_magnification_preference_screen"
            android:title="@string/accessibility_screen_magnification_title"/>

        <PreferenceScreen
            android:fragment="com.android.settings.accessibility.ToggleFontSizePreferenceFragment"
            android:key="font_size_preference_screen"
            android:title="@string/title_font_size"/>

        <com.android.settings.display.ScreenZoomPreference
            android:key="screen_zoom"
            android:title="@string/screen_zoom_title"/>

PreferenceCategory和PreferenceScreen都属于PreferenceGroup的子类,PreferenceCategory可以用于分类,且不可被点击;

对于PreferenceCategory,有如下两个API用于移除Preference;

public boolean removePreference(Preference preference)  //从group中移除  返回是否移除成功
public void removeAll( ) //移除group中所有的preference

对于PreferenceScreen的一级节点,则可以使用以下API进行移除;

Preference p = findPreference(KEY_LED_SETTINGS);
getPreferenceScreen().removePreference(p);

 也可以采用如下的方式;

removePreference(KEY_LED_SETTINGS);

附上Patch

diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
old mode 100644
new mode 100755
index 62671fa..e936dc3
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -214,6 +214,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
         super.onCreate(icicle);
         addPreferencesFromResource(R.xml.accessibility_settings);
         initializeAllPreferences();
+        mSystemsCategory.removePreference(mFontSizePreferenceScreen);
         mDpm = (DevicePolicyManager) (getActivity()
                 .getSystemService(Context.DEVICE_POLICY_SERVICE));
     }
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 78e0647..dea9465 100755
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -253,6 +253,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
             mNightModePreference.setValue(String.valueOf(currentNightMode));
             mNightModePreference.setOnPreferenceChangeListener(this);
         }
+        getPreferenceScreen().removePreference(mFontSizePref);
     }

方法二:对于 WIFI、蓝牙等处于设置第一页的设置项

直接上Patch

diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 152a949..3dacbf6 100755
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -1062,7 +1062,7 @@ public class SettingsActivity extends SettingsDrawerActivity

         String packageName = getPackageName();
         setTileEnabled(new ComponentName(packageName, WifiSettingsActivity.class.getName()),
-                pm.hasSystemFeature(PackageManager.FEATURE_WIFI), isAdmin, pm);
+                pm.hasSystemFeature(PackageManager.FEATURE_WIFI) && false, isAdmin, pm);

         setTileEnabled(new ComponentName(packageName,
                 Settings.BluetoothSettingsActivity.class.getName()),

方法三:对于直接在xml文件中绘制的UI界面

直接上Patch

diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
old mode 100644
new mode 100755
index 11cde5e..7f96032
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -43,9 +43,9 @@
             android:key="font_size_preference_screen"
             android:title="@string/title_font_size"/>

-        <com.android.settings.display.ScreenZoomPreference
+        <!--<com.android.settings.display.ScreenZoomPreference
             android:key="screen_zoom"
-            android:title="@string/screen_zoom_title"/>
+            android:title="@string/screen_zoom_title"/>-->

         <PreferenceScreen

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[RK3399][Android7.1] 调试笔记 --- 移除/删除Settings的Preference的三种方法小结 的相关文章

  • .NET 3.5 - 配置系统初始化失败异常

    在我的 winform 应用程序中 我尝试添加 userSetting 尽管 appSettings 也出现错误 添加设置后 我收到一个异常 其中显示 配置系统无法初始化 并带有内部异常 无法识别的配置部分 userSetting 异常详细
  • 当用户编辑字段中的值时,自定义 DatePicker 作为首选项不会保留值

    我创建了一个 DatePickerPreference 即我扩展了 DialogPreference 并在内部创建了一个 DatePicker 对象 并且让它几乎完美地工作 当您单击向上和向下箭头时 它会更改值并保存您选择的值 但是 如果您
  • 在 Excel Desktop 中创建和设置 Office.Settings 后,无法在 Excel Online 中检索

    根据 API 文档 办公室 设置 https learn microsoft com en us javascript api office office settings view excel js preview对象按加载项和每个文档保
  • 嵌套首选项屏幕因 Android 中的屏幕方向更改而关闭

    我最近偶然发现一个问题 我正在使用这样的嵌套 PreferenceScreen
  • Settings.Secure.HTTP_PROXY 在 ICS 中已弃用,但没有有关替换的信息

    Android 开发者文档说了以下内容Settings Secure HTTP PROXY 全局 http 代理的主机名和端口 在主机和端口 TODO 之间使用 分隔符 不推荐使用 global http proxy host 等 但没有任
  • C# .NET 应用程序设置和升级

    我使用 Settings Default MySettingName 和 Settings Default Save 来保存和加载设置 当我更改版本号时 如何从旧版本获取设置并将其应用到新版本 我只是不太明白 Settings Upgrad
  • Java Swing 保存和加载工作区/设置

    我有一个 Java Swing 应用程序 其中包含一堆框架 而这些框架又主要包含显示大量数据的表格 由于在启动时安排所有窗口和表格总是很麻烦且耗时 因此我想实现 工作区 功能 以便用户可以保存首选项设置并在启动时选择自动将存储的工作区加载到
  • iOS 启动设置 -> 限制 URL 方案

    我最近发现了一个很棒的iOS5自定义设置URL方案 这可以在这个伟大的website http handleopenurl com scheme apple settings app 我发现这很有效 将用户从我的应用程序引导到 设置 应用程
  • 如何从首选项屏幕返回到主要活动?

    我有一项主要活动和一项偏好活动 在我的第一个活动中 我调用菜单并通过调用startActivityForResult继续preferenceActivity case R id settings startActivityForResult
  • 错误:未指定模块(IntelliJ IDEA)

    我试图在 IntelliJ IDEA 中作为静态 Web 项目执行一个简单的程序 我是新手 正在学习使用 Node js 进行 Web 开发 我向IntelliJ IDEA官网寻求帮助 但错误还是一样 不过 我还配置了设置和项目结构 Err
  • Selenium 在 Firefox 中下载 PDF 的问题

    我正在结合 Firefox 61 0 和 Geckodriver 0 21 0 将我们的内部 Java Selenium 框架升级到最新版本 3 14 0 当我使用 Firefox 自动下载 PDF 文件时遇到问题 例如在这个link ht
  • C# 无法从应用程序成功启动中打开串行端口

    因此 我正在打开这个端口并将端口名称保存在我的应用程序设置中 当我加载表单时 它尝试打开端口 但失败了 仅在单击我的 开放端口 按钮后EXACT端口打开时使用相同的代码 然后 如果我单击 关闭端口 按钮并重新打开表单 它就可以工作了 它会自
  • 以编程方式设置打印机功能

    我正在开发一个 C 桌面应用程序 我需要更改一些打印机设置并打印一些图片 在我的程序中 我已经可以设置纸张尺寸 打印机名称等 如果我进入打印机首选项的高级选项 有一个名为 打印机功能 的部分 我不知道如何访问打印机设置中的参数 例如 有 边
  • iOS 启动设置 -> 限制 URL 方案

    我最近发现了一个很棒的iOS5自定义设置URL方案 这可以在这个伟大的website http handleopenurl com scheme apple settings app 我发现这很有效 将用户从我的应用程序引导到 设置 应用程
  • iOS 获取代理设置

    在我的项目中 我使用 libcurl 通过互联网下载数据 问题是 libcurl 无法检测 wifi 连接的代理设置 我必须手动设置 libcurl 的设置 所以我想知道如何获取 wifi 连接的代理设置 我在钥匙串中找到了一些有关信息的线
  • 删除不需要的空行 Eclipse 编辑器

    当我在 eclipse 中打开任何文件时 它在所有代码行和空白行之后显示替代空白行 我怎样才能删除它 In eclipse preference setting you can remove all the unwanted blank l
  • 未设置文件名时读取 SharedPreferences

    当您在 Android 上创建 PreferenceScreen 时 您的应用程序会为设置创建默认的 SharedPreferences 文件 我想阅读这个名字 或者在不指定名字的情况下获得参考 目前我使用 SharedPreference
  • Android Studio 3.0 - 设置未保存

    我已将 文件 gt 设置 gt 编辑器 gt 代码样式 中的 右边距 列 从默认的 100 增加到 140 不幸的是 每次重新启动 Android Studio 后 该边距都会重置 我还尝试导出和导入我的设置 但这并不能阻止重置右边距 希望
  • .Net应用程序设置路径

    默认情况下 Windows 应用程序设置保存在该目录中 USERPROFILE Local Settings Application Data
  • R 控制台是我的母语,如何将 R 设置为英语?

    我在 Windows 7 上使用 R 显然 R 不知何故发现了我说英语以外的语言的证据 并且顽固地坚持在控制台中以我自己的语言提供输出 由于多种原因 这是不可取的 我希望 R 是英语 什么有效 我能够使用LANGUAGE en作为 R 控制

随机推荐

  • cannot import name ‘gcd’ from ‘fractions’

    cannot import name gcd from fractions 在这里插入图片描述 在3 9
  • 【Java 实战】通过Redis 和 MQ 简单实现秒杀功能

    项目场景 实现一个商品秒杀的功能 能后台自定义秒杀时间段 商品库存等信息 一 设计思路 这里简单分享下思路 1 限流 秒杀时大量用户会在同一时间同时进行抢购 网站瞬时访问流量激增 由于只有少部分用户能够秒杀成功 所以要限制大部分流量 只允许
  • mariadb设置默认字符编码

    mariadb version 10 3 7 mariadb安装目录下找到data文件夹 xff0c 下面有个my ini文件 xff0c 该文件为mariadb服务启动加载文件 由于之前各种原因 xff0c 也搜索过博文 xff0c 但是
  • 多线程编程以及线程池相关记录

    Java 中经常需要用到多线程来处理一些业务 xff0c 非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程 xff0c 那样势必有创建及销毁线程耗费资源 线程上下文切换问题 同时创建过多的线程也可能引发资源耗尽
  • Spring Application Context 注入问题

    熟悉spring bean生命周期的都知道 xff0c 在其生命周期中有个很重要的接口 xff1a Aware 如果要注入application xff0c 可以用如下方式 64 Component public class SpringC
  • 解决我遇到的apt-get ,(Depends: AAA(>= BBB)but it is not going to install)的问题

    因为我直接把ubuntu16的源复制给了18的系统 xff0c 报错 xff0c 网上查说要换源我没懂啥意思 原来每个版本的源不一样 xff0c 这里贴一下清华的16和18的源 修改源文件source list xff08 1 xff09
  • IIS 网页在每天第一次打开慢的原因及解决

    今天碰到一个问题 xff0c 我们的网页在早晨的时候打开总是很慢 xff0c 其它时间有时也比较慢 开始认为是服务器性能的问题 xff0c 监测服务器资源使用后 xff0c 发现服务器的资源没有在高水平运行 xff0c 可以确定不是服务器硬
  • 【考研】操作系统——高速缓存与缓冲区、设备分配的数据结构

    一 磁盘高速缓存 操作系统中使用磁盘高速缓存技术是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息 xff0c 用以提高磁盘的 I O 速度 xff0c 对高速缓存复制的访问要比原始数据访问更为高效 二 缓冲区 xff08 一
  • Linux 系统的centos8安装jdk 1.8 教程

    卸载openjdk 查看rpm qa grep jdk 卸载yum y remove java 1 7 0 openjdk 1 7 0 75 2 5 4 2 el7 方法一 安装包手动安装 1 下载并上传 官网下载 我的备份 将我们下载好的
  • 解决Matlab2014A在win10下字体模糊的问题

    右击快捷方式 xff0c 进入属性设置 兼容性 更高高DPI设置 高DPI缩放替代 打钩 xff0c 下拉菜单选择应用程序
  • android工程师开发IOS oc浅析(14)之MRC与ARC

    1 为什么要进行内存管理 管理的是什么 内存管理 管理的是任何继承自NSObject的对象 因为一般的其他基本数据类型的局部变量都是储存在栈区的 当代码块执行结束 代码块中的局部变量出作用于就会被回收 而OC对象则不一样 OC对象类型是程序
  • Github个人主页绑定域名实操

    由于笔者在上传文件到github仓库 xff0c 由于相关操作经常会间歇性遗忘 xff08 还是不够熟悉惹的祸啊 xff09 xff0c 或者部分解决方案里并没有明确说明指令所表示的含义 xff0c 所以在百度了许多许多的相关文章和blog
  • spring 注解作用与解析过程

    64 PostConstruct 作用 xff1a 初始化方法之前执行 xff0c 作用于方法 xff0c 无方法上修饰符限制 解析过程 xff1a CommonAnnotationBeanPostProcessor xff08 BeanF
  • 关于Goland调试不可以使用

    今天在使用Goland时发现Goland断点调试无法使用 如下图所示 在找了半天之后在某论坛找到了原因 结果是360把Go的程序截拦导致无法断点调试 关闭360 重新打开文件即可使用
  • MySQL导入含有触发器的sql脚本报错解决方案

    报错码 ERROR 1419 HY000 You do not have the SUPER Privilege and Binary Logging is Enabled 解决方案 1 Linux下执行sql脚本 我们一般在linux服务
  • maven 本地仓库的配置以及如何修改默认.m2仓库位置

    本人转载于http blog csdn net qq 27093465 article details 52957253 以下为转载内容 xff1a 本地仓库是远程仓库的一个缓冲和子集 xff0c 当你构建Maven项目的时候 xff0c
  • onNewIntent 作用

    当Activity启动模式为singleTask时 如果在栈中已经有该Activity的实例 xff0c 就重用该实例 会调用实例的onNewIntent 不会调用onCreate方法 重用时 xff0c 会让该实例回到栈顶 xff0c 因
  • xml与txt文件格式互换

    当前遇到一个问题 xff0c 需要将txt格式的文件转换为xml格式的文件 xff0c 网上找了挺多的方法 xff0c 也成功了 但用时比较麻烦 xff0c 考虑到后期程序的需要 xff0c 决定开发一个小程序 耗时两个半天 xff0c 终
  • Spring中自定义注解的解析过程-学习

    Spring中自定义注解的解析过程 学习 在学习spring源码的过程中 xff0c 最好奇的一件事就是Sprint的注解是怎么被读取到的 xff0c 又是怎么进行解析的 然后又是怎么将注解的内容注入到spring容器中的 带着这个好奇心
  • [RK3399][Android7.1] 调试笔记 --- 移除/删除Settings的Preference的三种方法小结

    Platform RK3399 MID OS Android 7 1 2 Kernel v4 4 83 需求 xff1a 整理一下移除 删除Settings的Preference三种方法 xff1b 方法一 xff1a 对于 Prefere