Android 7.0 Settings 根目录添加自定义功能项

来源:互联网 发布:java开发需要掌握技术 编辑:程序博客网 时间:2024/06/06 00:53
一.添加自定义分组
1.Settings/res/values/donottranslate.xml 添加自定义分组类型
<string name="category_key_olcsettings">com.android.settings.category.olcsettings</string>
添加自定义分组类型
2.添加自定义类型的实现
Settings/src/com/android/settings/Settings.java 添加分组类型实现
public class Settings extends SettingsActivity {
......
public static class OlcSettings extends SettingsActivity { /* empty */ }
......
}
3.在 AndroidManifest.xml 中声明自定义类型分组类型
......
<activity android:name=".Settings$OlcSettings"
android:label="@string/header_category_olc_settings">
<intent-filter android:priority="5"> <!-- priority="5" 数字越大越靠前-->
<!-- 第一步声明的自定义分组类型名称-->
<action android:name="com.android.settings.category.olcsettings" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
二. 在自定义分组类型下添加功能项
1.创建自定义功能
package com.olc.net;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.R;

public class LANNTPServerVerify extends SettingsPreferenceFragment {

/** 继承父类SettingsPreferenceFragment 必须实现的方法, MetricsEvent.OLC_SETTINGS需要添加定义*/
@Override
protected int getMetricsCategory() {
return MetricsEvent.OLC_SETTINGS;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
final View view = inflater.inflate(R.layout.olc_security_verify_pwd,
container, false);
return view;
}
}
2. 添加 MetricsEvent.OLC_SETTINGS 的定义
framework/base/proto/src/metrics_constants.proto 应避免数值重复
......
//wpx olc settings
// OPEN: Settings > settings
// CATEGORY: SETTINGS
// OS: 6.0
OLC_SETTINGS = 744;
......
3.添加自定义功能
Settings/src/com/android/settings/Settings.java
......
public static class LANNTPServerVerifyActivity extends SettingsActivity { /* empty */ }
......
4.修改SettingsActivity
Settings/src/com/android/settings/SettingsActivity.java
// Show only these settings for restricted users
private String[] SETTINGS_FOR_RESTRICTED = {
......
Settings.LANNTPServerVerifyActivity.class.getName(),
......
}
private static final String[] ENTRY_FRAGMENTS = {
......
com.olc.net.LANNTPServerVerify.class.getName(),
......
}
5.修改 AndroidManifest.xml
添加
<activity android:name="Settings$LANNTPServerVerifyActivity"
android:label="@string/olc_settings_lan_time_sync"
android:icon="@drawable/ic_lan_ntp"
android:taskAffinity="">
<intent-filter android:priority="1">
<action android:name="com.android.settings.OLCSETTINGS_LANNET" />
<action android:name="android.settings.DISPLAY_SETTINGS" />
<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>
<!-- 定义此功能项,归属那个分类. com.android.settings.category.olcsettings 是Settings/res/values/donottranslate.xml 自定义的分组名称-->
<meta-data android:name="com.android.settings.category"
android:value="com.android.settings.category.olcsettings" />
<!-- 指定自定义 Frame 路径 "com.olc.security.OlcSecurityVerify"
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.olc.security.OlcSecurityVerify" />
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" />
</activity>
原创粉丝点击