Settings源代码分析之wifi高级界面

转载请注明出处:http://blog.csdn.net/droyon/article/details/20055301。

文中不当之处,请指正。

之所以会注意到Wifi的高级界面,是因为,它很特别,它叫AdvancedWifiSettingsActivity,它的特别之处就是它配置了parent_fragment_class。

<activity android:name="Settings$AdvancedWifiSettingsActivity"
                android:label="@string/wifi_advanced_settings_label"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:clearTaskOnLaunch="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.settings.WIFI_IP_SETTINGS" />
                <category android:name="android.intent.category.VOICE_LAUNCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.wifi.AdvancedWifiSettings" />
            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                android:resource="@id/wifi_settings" />
            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_TITLE"
                android:resource="@string/wifi_settings" />
            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_CLASS"
                android:value="com.android.settings.Settings$WifiSettingsActivity" />
        </activity>

关于meta-data配置,一般的界面只有前两行。例如WifiSettings

<activity-alias android:name=".wifi.WifiSettings"
                android:label="@string/wifi_settings"
                android:targetActivity="Settings$WifiSettingsActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:exported="true"
                android:clearTaskOnLaunch="true">
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.wifi.WifiSettings" />
            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                android:resource="@id/wifi_settings" />
        </activity-alias>

在了解Android 设置(Settings)源代码时,我对这两个界面进行了如下测试:

1、新建Android应用,通过如下intent启动wifi高级界面

Intent intent=new Intent();
intent.setAction("android.settings.WIFI_IP_SETTINGS");
startActivity(intent);

启动界面如下方左图,点击左上角“<”号,会返回到WifiSettings界面。如下方右图。

                                  

2、新建Android 应用,通过如下intent启动

Intent intent = new Intent();
intent.setAction("android.settings.BLUETOOTH_SETTINGS");
startActivity(intent);

启动界面如下:


我一直很纠结第一步中启动的wifi高级界面为什么会有左上角的“<”号,之前一直以为是因为AdvancedWifiSettingsActivity在配置中多了两项meta-data,今天删掉了多出来的meta-data,才发现认知错误。


其原因时因为在AndroidManifest中还配置了一个属性,正是这个属性,使wifi高级界面出现了左上角“<”号。

android:parentActivityName="Settings$WifiSettingsActivity" 

正是这条属性,让Wifi高级界面出现了左上角“<”号,并且点击时能够返回WifiSettings界面。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值