Android 7.0以后在Settings里添加item选项

若要app在settings里面添加一个开关选项,从Android7.0开始我们只需要在AndroidManifest里面简单设置即可。

本文提供的是Android 7.1.1设备上运行的效果图

先来一张效果图:

 

完成以上功能的两个关键点:

1. AndroidManifest的设置:

<activity android:name=".HardKey"
            android:taskAffinity=""
            android:label="@string/app_name"
            android:icon="@drawable/ic_accessibility_generic">

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

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

        <meta-data android:name="com.android.settings.ACTIVITY_ACTION"
            android:value="com.android.settings.HardKey" />
            <meta-data android:name="com.android.settings.icon"
                android:resource="@drawable/ic_accessibility_generic" />

        </activity>

  action 一定是 com.android.settings.MANUFACTURER_APPLICATION_SETTING

<meta-data android:name="com.android.settings.category"
            android:value="com.android.settings.category.system" />
这里表示要把该Item放在Settings下面的“系统”这个大类下。
在Android 7.0上从Settings的源码可以看到有如下四个分类: 无线和网络, 设备, 个人, 系统,这些分类同样适用于Android8.0设备上。
<string name="category_key_wireless">com.android.settings.category.wireless</string>
<string name="category_key_device">com.android.settings.category.device</string>
<string name="category_key_personal">com.android.settings.category.personal</string>
<string name="category_key_system">com.android.settings.category.system</string>

 

HardKey 继承于Activity 就是一个简单展示页面的类,点击该item可以展示一个页面。

2.这个应用的apk一定要用系统签名。

这些配置仅限于item展示在Settings的一级页面,二级页面我们仍然需要改动Settings的源码才可以添加进去Item。
冰冻三尺非一日之寒。 会当凌绝顶,一览众山小。
原文地址:https://www.cnblogs.com/8988-miaoxiaohua/p/9705574.html