Settings7.0添加新菜单列表项源码分析 Fragment配置Activity启动入口

本文探讨了如何在Android 7.0 Settings中添加新的菜单选项,包括在AndroidManifest.xml中配置Intent-filter Action,以及Settings布局的加载过程。通过分析SettingsLib的源码,揭示了系统如何处理第三方APK添加的菜单项,包括图标颜色调整和优先级排序的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android6.0 Settings是通过加载dashboard_categories.xml,获取显示列表,所以在6.0上可以直接在dashboard_categories.xml添加icon、title、summary,同时也可以添加目标fragment和Intent.

Android 7.0是通过在Androidmanifest.xml中配置intent-filter的Action,然后对指定的Action进行搜索获取需要显示的列表项

Settings中添加一个菜单选项

需要启动的页面代码在Settings中,直接按如下1、2、3步在Settings的AndroidManifest.xml中添加即可

    <activity android:name="Settings$DataUsageSummaryActivity"
        android:label="@string/data_usage_summary_title"
        android:icon="@mipmap/ic_settings_data_usage3"
        android:taskAffinity="">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="com.android.settings.SHORTCUT" />
    </intent-filter>
    <!-- 1.SettingsActivity通过该过滤器获取这个选项,priority="1"表示选项的位置顺序数字由高到底排序 -->
    <intent-filter android:priority="1">
        <action android:name="com.android.settings.action.SETTINGS" />
    </intent-filter>
    <!-- 2.表示该菜单项在 wireless的分类中 -->
    <meta-data android:name="com.android.settings.category"
        android:value="com.android.settings.category.wireless" />
    <!-- 3.启动fragment -->
    <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
        android:value="com.android.settings.datausage.DaaUsageSummary" />
    <!-- 3.启动activity(和3.启动fragment二选一) -->
    <meta-data android:name="com.android.settings.ACTIVITY_ACTION"
    android:value="com.android.settings.HardKey" />

如果属于第三方apk,我们需要将如上配置写在在第三方apk的AndroidManifest.xml文件中,同时添加icon,title等信息(完全不需要修改Settings代码来添加一个菜单选项),如下:

第三方apk的 AndroidManifest.xml中添加:

        <activity
            android:name=".cloud.CloudServiceActivity"
            android:exported="true"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="com.qucii.usercenter.cloud.CloudServiceActivity" />
                <!-- 1.Settings中会通过这个action搜索到该activity -->
                <action android:name="com.android.settings.action.EXTRA_SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <!-- 2.SettingsActivity通过该过滤器获取这个选项,priority="1"表示选项的位置顺序数字由高到底排序 -->
            <intent-filter android:priority=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值