前言
今天要很任性的研究一下Android5.0中Settings子模块的跳转实现。
Settings应用的Launcher类
我们首先看一下Settings应用的Launcher类。查看package/app/Settings/AndroidManifest.xml文件:
<activity-alias android:name="Settings"
android:taskAffinity="com.android.settings"
android:label="@string/settings_label_launcher"
android:launchMode="singleTask"
android:targetActivity="Settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
可以看到,指定的Launcher类为Settings.java,其源码实现如下:
import com.android.settings.applications.AppOpsSummary;
/**
* Top-level Settings activity
*/
public class Settings extends SettingsActivity {
/*
* Settings subclasses for launching independently.
*/
public static class BluetoothSettingsActivity extends SettingsActivity {
/* empty */ }
public static class WirelessSettingsActivity extends SettingsActivity {
/* empty */ }
public static class SimSettingsActivity extends SettingsActivity {
/* empty */ }
public static class TetherSettingsActivity extends SettingsActivity {
/* empty */ }
public static class VpnSettingsActivity extends SettingsActivity {
/* empty */ }
public static class DateTimeSettingsActivity extends SettingsActivity {
/* empty */ }
public static class StorageSettingsActivity extends SettingsActivity {
/* empty */ }
public static class WifiSettingsActivity extends SettingsActivity {
/* empty */ }
public static class WifiP2pSettingsActivity extends SettingsActivity {
/* empty */ }
public static class InputMethodAndLanguageSettingsActivity extends SettingsActivity {
/* empty */ }
public static class KeyboardLayoutPickerActivity extends SettingsActivity {
/* empty */ }
public static class InputMethodAndSubtypeEnablerActivity extends SettingsActivity {
/* empty */ }
public static class VoiceInputSettingsActivity extends SettingsActivity {
/* empty */ }
public static class SpellCheckersSettingsActivity extends SettingsActivity {
/* empty */ }
public static class LocalePickerActivity extends SettingsActivity {
/* empty */ }
public static class UserDictionarySettingsActivity extends SettingsActivity {
/* empty */ }
public static class HomeSettingsActivity extends SettingsActivity {
/* empty */ }
public static class DisplaySettingsActivity extends SettingsActivity {
/* empty */ }
public static class DeviceInfoSettingsActivity extends SettingsActivity {
/* empty */ }
public static class ApplicationSettingsActivity extends SettingsActivity {
/* empty */ }
public static class ManageApplicationsActivity extends SettingsActivity {
/* empty */ }
public static class