其他应用跳转到Settings指定设置子项流程分析

来源:互联网 发布:淘宝钓鱼望远镜 编辑:程序博客网 时间:2024/05/29 13:09

1.纯代码实现:

在Settings.java 的下面方法中,


private void getMetaData(Intent intent) {}


添加以下代码


if (action != null) {if (action.equals(individuationAction)) {//Action 是指定的ActionmIndividuationHeader = new Header();//创建header对象mIndividuationHeader.fragment = "com.android.settings.individuation.SecuritySettings";//指定他的视图Fragment对象mIndividuationHeader.title = getResources().getString(R.string.running_settings);//设置header 的标题switchToHeaderLocal(mIndividuationHeader);} else {getMetaData();//处理已在manifest中注册的跳转项}} else {getMetaData();}


还要在Manifest中,Settings Activity的 intent-filter中,添加要拦截的Action 字段

2:在Manifest中配置,以wifi设置为例:

1、在Settings.java 中添加 入口Activity ,因为Manifest中只能配置4大组件及相关权限声明,Fragment无法在其中显式配置,并声明Action拦截。

public static class WifiSettingsActivity extends Settings { /* empty */}

2、在Manifest中添加,拦截的Action,并配置相关的Fragment和title。

<activity            android:name="Settings$WifiSettingsActivity"            android:clearTaskOnLaunch="true"            android:configChanges="orientation|keyboardHidden|screenSize"            android:label="@string/wifi_settings"            android:parentActivityName="Settings" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />
<!-- 拦截Action -->
<action android:name="android.settings.WIFI_SETTINGS" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.VOICE_LAUNCH" /> <category android:name="com.android.settings.SHORTCUT" /> </intent-filter><!-- 设置Fragment 视图加载类 --> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.wifi.WifiSettings" />
<!-- 设置title -->
<meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID" android:resource="@id/wifi_settings" />
        </activity>
3、当其他应该请求跳转到wifi设置的时候,在oncreate()中,会先调用getMetaData(Intent intent) 去加载指定的Fragment,并显示。


第2中未验证,有什么问题意见,可以相互交流