Android 7.0 settings中添加新菜单

来源:互联网 发布:京东聊天软件 编辑:程序博客网 时间:2024/06/05 11:11

需求:

在设置中,添加一级菜单项,在设备中加入“按键交换”,此项菜单与“显示”并列


由于android 7.0 settings网上资料还没有,此需求在高通技术支持的帮助下加上自己的分析才实现(对高通技术支持小伙表示感谢),实现后发现特别简单,但是实现前一直没头绪,希望记下来能对网友有所帮助

只需实现Activity,写布局文件后,在AndroidManifest.xml中配置即可,配置如下

<activity android:name="HardKey"                android:label="@string/hardkey_switch"                android:icon="@drawable/a2_icon_hardkey_switch"                android:taskAffinity="">            <intent-filter android:priority="1">                <action android:name="com.android.settings.HARDKEY" />                <action android:name="android.settings.HARDKEY" />                <category android:name="android.intent.category.DEFAULT" />            </intent-filter>            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="android.intent.category.VOICE_LAUNCH" />                <category android:name="com.android.settings.SHORTCUT" />            </intent-filter>            <intent-filter android:priority="9">                <action android:name="com.android.settings.action.SETTINGS" />            </intent-filter>            <meta-data android:name="com.android.settings.category"                android:value="com.android.settings.category.device" />            <meta-data android:name="com.android.settings.ACTIVITY_ACTION"                android:value="com.android.settings.HardKey" />                        <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"                android:value="true" />        </activity>

其中HarKey.java是一个Activity文件,直接继承了Activity

设置下的一级菜单必须要有此intent,SettingsActivity文件会根据此filter过滤

 android:priority="9"加这个属性与位置顺序有关,即两个同样的菜单,哪个在前,哪个在后

<intent-filter android:priority="9">
                <action android:name="com.android.settings.action.SETTINGS" />
            </intent-filter>

此meta表示 菜单项在 device的分类中

<meta-data android:name="com.android.settings.category"
                android:value="com.android.settings.category.device" />


表示此文件是一个Activity

<meta-data android:name="com.android.settings.ACTIVITY_ACTION"
                android:value="com.android.settings.HardKey" />

如果是一个fragment,则用

<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.DisplaySettings" />


这个必须要有,不然不会显示在设置菜单项中

<intent-filter android:priority="9">                <action android:name="com.android.settings.action.SETTINGS" />            </intent-filter>

这个属性也要加,因为其他的菜单项都有(添加新的类似功能时,对比已有功能实现),具体还不知道起什么作用,有知道的可以留言

<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />



效果图



原图


后续将介绍android 7.0 settings源码流程

3 0
原创粉丝点击