若要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。
冰冻三尺非一日之寒。
会当凌绝顶,一览众山小。