在android rom 定制开发中,经常遇到有些高级设置选项不想让用户看到或操作,常用的方法就是隐藏掉相关的一级菜单。
按以下步骤进行即可:
1.找到需要隐藏的一级菜单对应的Activity名称,可通过日志打印获取,比如“备份和重置”对应名称为PrivacySettings。
2.在SettingsActivity.java[com.android.settings.SettingsActivity]中找到对应的FRAGMENT列表位置注释掉 PrivacySettings.class.getName(),
private static final String[] ENTRY_FRAGMENTS = {
// WirelessSettings.class.getName(),
EthernetSettings.class.getName(),
WifiSettings.class.getName(),
AdvancedWifiSettings.class.getName(),
SavedAccessPointsWifiSettings.class.getName(),
//BluetoothSettings.class.getName(),
SimSettings.class.getName(),
TetherSettings.class.getName(),
WifiP2pSettings.class.getName(),
VpnSettings.class.getName(),
DateTimeSettings.class.getName(),
LocaleListEditor.class.getName(),
InputMethodAndLanguageSettings.class.getName(),
AvailableVirtualKeyboardFragment.class.getName(),
SpellCheckersSettings.class.getName(),
// HISILICON delete begin
// OptimizedBoot, delete useless modules
// UserDictionaryList.class.getName(),
// UserDictionarySettings.class.getName(),
// HISILICON delete end
HomeSettings.class.getName(),
DisplaySettings.class.getName(),
DisplaySettingsSTB.class.getName(),//hisi
MediaSettings.class.getName(),//hisi
AdvanceOptions.class.getName(),
StandbySettings.class.getName(),
//DeviceInfoSettings.class.getName(),
InforActivity.class.getName(),
ManageApplications.class.getName(),
NotificationApps.class.getName(),
ManageAssist.class.getName(),
ProcessStatsUi.class.getName(),
NotificationStation.class.getName(),
LocationSettings.class.getName(),
//SecuritySettings.class.getName(),
UsageAccessDetails.class.getName(),
// PrivacySettings.class.getName(),
DeviceAdminSettings.class.getName(),
...}
3.在高级设置的清单文件中注释掉对应的Activity声明。AndroidManifest.xml
<!-- <activity android:name="Settings$PrivacySettingsActivity"
android:label="@string/privacy_settings_title"
android:icon="@drawable/ic_settings_backup"
android:configChanges="orientation|keyboardHidden|screenSize"
android:taskAffinity="com.android.settings"
android:parentActivityName="Settings">
<intent-filter android:priority="1">
<action android:name="android.settings.PRIVACY_SETTINGS" />
<action android:name="android.settings.BACKUP_AND_RESET_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" />
</intent-filter>
<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.personal" />
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.PrivacySettings" />
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" />
</activity> -->
<activity android:name="SetFullBackupPassword"
android:theme="@style/Theme.SubSettingsDialogWhenLarge"
android:exported="false">
</activity>
4.重新编译Settings.apk,adb push 到 system/priv-app/Settings/Settings.apk 即可验证