隐藏Settings菜单的几种方法

Android  2019年2月22日 pm5:04发布6年前 (2019)更新 城堡大人
76 0 0


此文章是摘抄的,作为影藏系统设置中的部分选项还是有效的。

本文修改基于mtk6.0系统

隐藏一个一级菜单
源码位置 packages/apps/Settings/src/com/android/settings/SettingsActivity.java;

 private int[] SETTINGS_FOR_RESTRICTED = {
             R.id.wireless_section,
             R.id.wifi_settings,
             R.id.bluetooth_settings,
             R.id.location_settings,
             R.id.security_settings,
             ...
 };

例如隐藏位置项
①修改updateTilesList()方法,添加:

private void updateTilesList(List<DashboardCategory> target) {
    ....
 // Ids are integers, so downcasting is ok
    int id = (int) category.id;
    int n = category.getTilesCount() - 1;
    while (n >= 0) {
       ....
       } else if (id == R.id.location_settings) {
         removeTile=true;
       }
       ....
       if (removeTile && n < category.getTilesCount()) {
           category.removeTile(n);  //移除
       }
       n--;
    }

当removeTile = true时,这个tile所在组会将此tile移除。
②直接注释packages/apps/Settings/res/xml/dashboard_categories.xml中关于位置项

+  <!-- Location -->
   <dashboard-tile
         android:id="@+id/location_settings"
         android:title="@string/location_settings_title"
         android:fragment="com.android.settings.location.LocationSettings"
         android:icon="@drawable/ic_settings_location"
    />
+  -->

mainifest中关于LocationSettings的也要注释掉。

隐藏一个二级菜单
①可直接找到所在xml文件,直接注释

  <PreferenceCategory android:key="device_admin_category"
             android:title="@string/device_admin_title"
             android:persistent="false">

         <Preference android:key="manage_device_admin"
                 android:title="@string/manage_device_admin"
                 android:summary="@string/manage_device_admin_summary"
                 android:persistent="false"
                 android:fragment="com.android.settings.DeviceAdminSettings"/>

+  <!--       <SwitchPreference android:key="toggle_install_applications_validation"
                 android:title="@string/install_validation"
                 android:summaryOn="@string/install_unknown_applications_validation"
                 android:summaryOff="@string/install_unknown_applications_validation"
+                 android:persistent="false" />       -->

         <SwitchPreference android:key="toggle_install_applications"
                 android:title="@string/install_applications"
                 android:summaryOff="@string/install_unknown_applications"
                 android:summaryOn="@string/install_unknown_applications"
                 android:persistent="false" />

     </PreferenceCategory>

②在代码中移除
deviceAdminCategory.removePreference(mToggleAppInstallationInvalidation);
deviceAdminCategory就是目标所在的PreferenceCategory 。

settings设置中直接移除整个组
如:无线和网络,设备,个人,系统。移除设备组为例

源码位置 packages/apps/Settings/src/com/android/settings/SettingsActivity.java;

 public static void loadCategoriesFromResource(int resid, List<DashboardCategory> target,
             Context context) {
      XmlResourceParser parser = null;
      try {
           parser = context.getResources().getXml(resid);
           AttributeSet attrs = Xml.asAttributeSet(parser);

      int type;
      while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
                     && type != XmlPullParser.START_TAG) {
                 // Parse next until start tag is found
      }
          ...   // dashboard-categories.xml解析
-
-                    target.add(category);
+                    if (category.key.equals("com.android.settings.category.device")) {
+
+                    }else {
+                        target.add(category);
+                    }
                 } else {
                     XmlUtils.skipCurrentTag(parser);
                 }

你想隐藏哪个组,就不把它加入到List数组中。

四个组所对应的key值在,donottranslate.xml中定义

   * <li>com.android.settings.category.wireless</li>
   * <li>com.android.settings.category.device</li>
   * <li>com.android.settings.category.personal</li>
   * <li>com.android.settings.category.system</li>

测试有效。
本文摘抄于:https://blog.csdn.net/wxd_csdn_2016/article/details/84791287

 历史上的今天

  1. 2023: Android Studio删除引用的资源(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

Android汉字转拼音以及按照[字母][数字][特殊字符]排序

前言多媒体开发时需要对音频文件进行排序,由于媒体文件的命名多样,需要对文件名字进行统一的转换,然后进行排序。排序规则:【字母】-【数字】-【特殊字符】PS: 也存在外国文字(比如韩语,俄语,日语),为了省事,这个默认当成特殊字符隐藏内容!付费阅读后才能查看!¥3 ¥6多个隐藏块只需支付一次...

楼宇烈:禅就是我们的日常

有很多人想了解佛教,特别是想了解禅宗,但对于禅宗大家又常常觉得把握不定,因为对于禅宗的许多公案大家都不知道在说什么东西,也不知道禅宗怎么样来修证,怎么样才能了脱生死,怎么样才能明心见性。其实这些问题都是来自于将禅看成是和我们现实世界不一样的、很神秘的、彼岸的一种境界。然而,禅并不是彼岸世界的东西,禅...

纪伯伦:岸边一捧沙

爱情的忧愁歌唱着,知识的忧愁谈论着,欲望的忧愁悄语着,贫穷的忧愁号哭着。但是,还有一种忧愁,比爱情更深沉,比知识更高贵,比欲望更有力,比贫穷更苦涩。不过,它哑然无声,眼睛像星星一样闪闪发亮。当你遇遭不幸,向邻居诉说时,你正将自己心灵的一部分托付给他。倘若他胸怀宽阔,他会感谢你;倘若他气量狭小,他会...

Date常用格式转换

前言记录一下,Date常用格式的转换。记录于此,方便自己查阅。好记性不如烂笔头正文Date对象# 创建date对象Date date = new Date();# 获取当前时间Date date = new Date(System.currentTimeMillis());当...

麦芒:今夜的火花今夜就会熄灭

今夜的火花今夜就会熄灭告诉我的不是一个人而是两个人、三个人……先微笑,然后是沉默和迷惘在数着星星的过程中也许会忘记自己眉毛底下两颗最有人性的眸子它们离我一样遥不可及而我多么疲惫,多么恍惚好像一个白昼尚未结疤的伤口,有着腐败的肉和新鲜的血,无人用嘴吮吸手指,手指在跳动,仿佛弹...

SurfaceView和TextureView介绍

前言TextureView和SurfaceView常用于视频播放画面显示,项目中根据各种需求需要在二者中选中。这次记录一下他们之间的区别和特点。正文 个人随笔,只是简单总结,谢谢隐藏内容!评论可看后才能查看!评论可看参考文章《SurfaceView 与 TextureView ...