可以模仿Settings其他菜单项加入自己想要的一级或二级子菜单项。

比如,在菜单Settings里加入一级和二级Usb Mode Settings菜单项 (以Android4.4 KK为例)

一. 加入一级子菜单项Usb Mode Settings, 加在About phone后面

1. packages/apps/Settings/AndroidManifest.xml
        <activity android:name="Settings$DeviceInfoSettingsActivity"
                android:theme="@style/Theme.Holo.DialogWhenLarge"
                android:label="@string/device_info_settings"
                android:taskAffinity="com.android.settings"
                android:parentActivityName="Settings">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.settings.DEVICE_INFO_SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />db
                <category android:name="android.intent.category.VOICE_LAUNCH" />
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.DeviceInfoSettings" />
            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                android:resource="@id/about_settings" />
        </activity>

<activity android:name="Settings$UsbModeSettingsActivity"
                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                android:label="@string/usb_mode_settings"
                android:taskAffinity="com.android.settings"
                android:parentActivityName="Settings">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.settings.USB_MODE_SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.UsbModeSettings" />
            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                android:resource="@id/usb_mode_settings" />
        </activity>

2. packages/apps/Settings/res/xml/settings_headers.xml 
        <!-- About Device -->
        <dashboard-tile
                android:id="@+id/about_settings"
                android:title="@string/about_settings"
                android:fragment="com.android.settings.DeviceInfoSettings"
                android:icon="@drawable/ic_settings_about"
                />
               
        <!-- Usb Mode -->
        <dashboard-tile
                android:id="@+id/usb_mode_settings"
                android:title="@string/usb_mode_settings"
                android:fragment="com.android.settings.UsbModeSettings"
                android:icon="@drawable/ic_settings_about"
                />

Lollipop
packages\apps\Settings\res\xml\dashboard_categories.xml       
        <!-- Usb Mode -->
        <dashboard-tile
                android:id="@+id/usb_mode_settings"
                android:title="@string/usb_mode_settings"
                android:fragment="com.android.settings.UsbModeSettings"
                android:icon="@drawable/ic_settings_about"
                />
3. packages\apps\Settings\src\com\android\settings\Settings.java
     public static class DeviceInfoSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class UsbModeSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ }

4. packages/apps/Settings/src/com/android/settings/Settings.java
            DeviceInfoSettings.class.getName(),
+            UsbModeSettings.class.getName(),
             ManageApplications.class.getName(),

Lollipop
packages\apps\Settings\src\com\android\settings\SettingsActivity.java
            DeviceInfoSettings.class.getName(),
+            UsbModeSettings.class.getName(),
            ManageApplications.class.getName(),

5. packages/apps/Settings/res/values/strings.xml
增加新字符串

新增部分
6. packages/apps/Settings/res/drawable/
添加图标

7. 模仿packages/apps/Settings/res/xml/device_info_settings.xml新加一layout文件
packages/apps/Settings/res/xml/usb_mode_settings.xml
      android:title="@string/about_settings">       
        <!-- Device status - launches activity -->
        <PreferenceScreen android:key="status_info"
                android:title="@string/device_status"
                android:summary="@string/device_status_summary">
            <intent android:action="android.intent.action.MAIN"
                    android:targetPackage="com.android.settings"
                    android:targetClass="com.android.settings.deviceinfo.Status" />
        </PreferenceScreen>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        android:title="@string/usb_mode_settings">
    <PreferenceCategory
            android:title="@string/usb_connection_category" />
    <CheckBoxPreference
        android:key="usb_mtp"
        android:title="@string/usb_mtp_title"
        android:summary="@string/usb_mtp_summary"
        />
    <CheckBoxPreference
        android:key="usb_mass_storage"
        android:title="@string/usb_ptp_title"
        android:summary="@string/usb_ptp_summary"
        />
</PreferenceScreen>

8. 模仿packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java新加一代码实现
packages/apps/Settings/src/com/android/settings/UsbModeSettings.java

二. 加入一级子菜单项Usb Mode Settings, 加在Developer options下面, 在"Desktop backup password"后面

1.packages/apps/Settings/AndroidManifest.xml
        <activity android:name="SetFullBackupPassword"
                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                android:exported="false">
        </activity>

<activity android:name="UsbModeSettings"
                android:theme="@style/Theme.SubSettingsDialogWhenLarge"
                android:exported="false">
        </activity>

2. packages/apps/Settings/res/xml/development_prefs.xml
    <PreferenceScreen
            android:key="local_backup_password"
            android:title="@string/local_backup_password_title"
            android:summary="@string/local_backup_password_summary_none"
            android:persistent="false" >
        <intent
                android:action="android.settings.privacy.SET_FULL_BACKUP_PASSWORD"
                android:targetPackage="com.android.settings"
                android:targetClass="com.android.settings.SetFullBackupPassword" />
    </PreferenceScreen>

<PreferenceScreen
            android:key="usb_mode"
            android:title="@string/usb_mode_settings"
            android:summary="@string/usb_mode_settings_summary"
        <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.android.settings"
                android:targetClass="com.android.settings.UsbModeSettings" />
    </PreferenceScreen>

3. /packages/apps/Settings/res/values/strings.xml
+    <string name="usb_mode_settings">USB mode settings</string>
......

4. 新加文件

res/layout/usb_mode_settings.xml

packages/apps/Settings/res/drawable/ 图标

src/com/android/settings/UsbModeSettings.java

在菜单Setting加入子菜单相关推荐

  1. 如何动态添加菜单/菜单项、子菜单、右键菜单

    有关菜单的操作主要用到 CMenu 类,当然也可用相应 API 函数, CMenu 类只是 MFC 对 API 中操作菜单的函数的封装而已. 不过能用类就尽量用类,类的组织方式好呗,代码看着也舒服. ...

  2. dedecms二级菜单中判断子菜单标签的方法

    这篇文章将为大家详细讲解有关dedecms二级菜单中判断子菜单标签的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获. 虚拟接口是用户本地数据中心通过海外专线访问V ...

  3. 鼠标移动事件(鼠标移动到主菜单上显示子菜单)

    mouseenter():当鼠标指针穿过元素时,会发生 mouseenter 事件.与 mouseover 事件不同,只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件.如果鼠标指针穿 ...

  4. Android菜单详解——子菜单(SubMenu)

    1,子菜单就是将功能相同或相似的分组进行多级显示的一种菜单. 2,创建子菜单的步骤: a) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu() ...

  5. C#遍历ContextMenuStrip右键菜单中包含子菜单的所有菜单并添加事件

    今天写程序的时候,用到了右键菜单控件ContextMenuStrip,真的很方便,写了几个菜单与子菜单项,本来是可以用双击来给每一个菜单添加事件的,不过,这样做似乎非常麻烦,而且对一些子菜单也不容易控 ...

  6. gitlab如何克隆项目到本地进行开发,如何让webstorm项目右键菜单出现Git子菜单,右下角出现Matser分支

    cd 到盘符 例如D:. cd 到您的项目目录 去gitlab对应项目拷贝http的克隆地址 然后在gitlab命令窗口输入  git clone http://192.168.2.231/knoww ...

  7. Android之子菜单的创建

    菜单包括选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu). 创建子菜单(SubMenu)的步骤: 1.重写Activity的onCreateOption ...

  8. Electron中实现菜单、子菜单、以及自带操作事件

    场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...

  9. php在菜单栏里加子菜单,WordPress后台添加子菜单add_submenu_page()

    接上文:WordPress后台添加顶级菜单add_menu_page(),今儿再分享一下在 wordpress 后台侧边栏添加子菜单的方法,用到的函数是:add_submenu_page() 函数用法 ...

最新文章

  1. 蓝牙地址的name为null_蓝牙, enable协议栈流程
  2. linux kernel的spinlock代码导读和分析
  3. phpnow mysql_使用PHPnow搭建本地PHP环境+创建MySQL数据库 | 倡萌的自留地
  4. algorithm -- 选择排序
  5. HGE2D引擎按键消息分析
  6. 格式工厂2012致力于建立一个不受强大的团队
  7. 50 FI配置-财务会计-固定资产-与总账集成-定义集成资产购置的技术清算科目
  8. pandas时间处理操作
  9. Spring的注解形式:@Repository、@Service、@Controller
  10. python如何让图片镜像翻转_如何用 Python 增量备份 Roam Research 笔记图片?
  11. Sublime text3 更改侧边栏颜色
  12. 【概率论与数理统计】小结7 - 统计学中的基本概念
  13. 纯CSS3实现兔斯基简单害羞表情
  14. 【深入浅出通信原理-学习笔记】信道
  15. 整理外企常用英语及其缩写
  16. Google Chrome 浏览器——隐藏功能及快捷键
  17. Linux chmod +755和chmod +777 各是什么意思呢?
  18. python发邮件附件_python 发送带附件的邮件
  19. 从零开始的MySQL教程——上
  20. 红米手机4完整刷成开发版获得root权限的步骤

热门文章

  1. aspectJ框架的使用
  2. android SDK-25事件分发机制--源码正确解析
  3. 写个续集,填坑来了!关于“Thread.sleep(0)这一行‘看似无用’的代码”里面留下的坑。
  4. Freemarker导出复杂Excel图文教程
  5. java动态性,java动态性
  6. 比Worktile更适合软件研发的项目管理系统有哪些?10大项目管理系统对比
  7. idea爬虫爬取招聘信息,大数据
  8. 飞利浦SHL3565耳机套耳罩更换
  9. CSS-使用background实现四个角边框
  10. PHP 实现阿里云短信API对接(登录/注册参考)