安卓源码分析之设置页面注释某一项

安卓源码设置页面也是一个内置app,可以直接模块编译后就可以直接adb install ,不用push到指定文件夹安装,修改起来比较方便

settings源码目录在packages/apps

settings入口在settings页面

 <activity-alias android:name="Settings"
                android:label="@string/settings_label_launcher"
                android:taskAffinity="com.android.settings.root"
                android:launchMode="singleTask"
                android:targetActivity=".homepage.SettingsHomepageActivity">
            <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>
            <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/>
        </activity-alias>

里面都是一些静态内部类没有实现,主要实现在SettingsActivity 

SettingsActivity里面有个方法launchSettingFragment

    @VisibleForTesting
    void launchSettingFragment(String initialFragmentName, Intent intent) {
        if (initialFragmentName != null) {
            setTitleFromIntent(intent);

            Bundle initialArguments = intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
            switchToFragment(initialFragmentName, initialArguments, true,
                    mInitialTitleResId, mInitialTitle);
        } else {
            // Show search icon as up affordance if we are displaying the main Dashboard
            mInitialTitleResId = R.string.dashboard_title;
            switchToFragment(TopLevelSettings.class.getName(), null /* args */, false,
                    mInitialTitleResId, mInitialTitle);
        }
    }

里面有个参数initialFragmentName就是要跳转的meta,如果这个meta为空就跳到首页,也就是TopLevelSettings.class

TopLevelSettings.class里面有个方法

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.top_level_settings;
    }

这个xml是就在主页面要展示的内容,可以直接注释里面的内容删除某一项

如果不想要某一个页面出现,直接找到相应的activity注释里面的meta就行

安卓源码分析之设置页面注释某一项

上一篇:苹果Mac自定义右键菜单工具:Power Menu


下一篇:Oracle如何用内置脚本查堵塞