Android Settings中,修改隐藏一级菜单和二级菜单

概要

Settings 隐藏一级菜单,可以通修改以下两个文件分别实现 AndroidManifest.xml SettingsActivity.java指定选项隐藏

Settings 隐藏二级菜单,则需要找到对应布局进行修改

隐藏Settings的一级菜单

方法1 : 修改AndroidManifest.xml文件 (\packages\apps\Settings\AndroidManifest.xml)
例子:隐藏无障碍菜单
修改前
修改前

 <activity
            android:name="Settings$AccessibilitySettingsActivity"
            android:label="@string/accessibility_settings"
            android:icon="@drawable/ic_homepage_accessibility"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:taskAffinity="com.android.settings"
            android:parentActivityName="Settings">
            <intent-filter android:priority="1">
                <action android:name="android.settings.ACCESSIBILITY_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>
           <!--在此处添加注释,用于隐藏无障碍功能的显示,priority是用于定义优先级,值越大优先级越高,菜单越靠前-->
           <!--<intent-filter android:priority="2">
                <action android:name="com.android.settings.action.SETTINGS" />
            </intent-filter> -->
            <meta-data android:name="com.android.settings.category"
                android:value="com.android.settings.category.ia.homepage" />
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.accessibility.AccessibilitySettings" />
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />
            <meta-data android:name="com.android.settings.summary"
                android:resource="@string/accessibility_settings_summary" />
        </activity>

修改后
修改后,无障碍模式已隐藏
方法2 : 单独修改SettingsActivity.java文件,无须修改AndroidManifest.xml的内容
(\packages\apps\Settings\src\com\android\settings\SettingsActivity.java)
例子:隐藏无障碍菜单

private void doUpdateTilesList() {
	  ······
	//add by Lang stert 
    somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
                    Settings.AccessibilitySettingsActivity.class.getName()),//如需隐藏其他选项,可修改在SettingsGateway.SETTINGS_FOR_RESTRICTED内定义的信息即可
            false, isAdmin)//设置为false后,表示不再显示。
            || somethingChanged;
    //add by Lang end
    ······
}

通过判断component,在SettingsGateway.SETTINGS_FOR_RESTRICTED存储的信息判断是否存在后,通过setTileEnabled()方法设置是否显示

private boolean setTileEnabled(StringBuilder changedList, ComponentName component,
        boolean enabled, boolean isAdmin) {
    if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName())
            && !ArrayUtils.contains(SettingsGateway.SETTINGS_FOR_RESTRICTED,
            component.getClassName())) {
        enabled = false;
    }
    boolean changed = setTileEnabled(component, enabled);
    if (changed) {
        changedList.append(component.toShortString()).append(",");
    }
    return changed;
}

    }

隐藏Settings的二级菜单

提示:这里可以添加技术名词解释
以Settings一级菜单系-系统选项-二级菜单-手势选项-为例

\packages\apps\Settings\res\xml\system_dashboard_fragment.xml 找到其中布局设置中的位置,注释掉以下就可以了

<!-- 注释相关信息 -->
   <!--<Preference
        android:key="gesture_settings"
        android:title="@string/gesture_preference_title"
        android:icon="@drawable/ic_settings_gestures"
        android:order="-250"
        android:fragment="com.android.settings.gestures.GestureSettings"
        settings:controller="com.android.settings.gestures.GesturesSettingPreferenceController"/>
 -->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值