Settings\src\com\android\settings\Setting.java
private void updateHeaderList(List<Header> target) {
final boolean showDev = mDevelopmentPreferences.getBoolean(
DevelopmentSettings.PREF_SHOW,
android.os.Build.TYPE.equals("eng"));
int i = 0;
mHeaderIndexMap.clear();
while (i < target.size()) {
Header header = target.get(i);
// Ids are integers, so downcasting
int id = (int) header.id;
if (id == R.id.operator_settings || id == R.id.manufacturer_settings) {
Utils.updateHeaderToSpecificActivityFromMetaDataOrRemove(this, target, header);
}
else if (id == R.id.wifi_settings) {
// Remove WiFi Settings if WiFi service is not available.
// 把if判断去掉隐藏WiFi
//if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)) {
target.remove(i);
//}
}
else if (id == R.id.bluetooth_settings) {
//把if判断去掉隐藏蓝牙
// Remove Bluetooth Settings if Bluetooth service is not available.
//if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
target.remove(i);
//}
}
else if (id == R.id.data_usage_settings) {
// Remove data usage when kernel module not enabled
//把if判断去掉隐藏流量使用情况(内核模块未启用也会remove)
//final INetworkManagementService netManager = INetworkManagementService.Stub
// .asInterface(ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
//try {
// if (!netManager.isBandwidthControlEnabled()) {
target.remove(i);
// }
//} catch (RemoteException e) {
// ignored
//}
} else if (id == R.id.account_settings) {
int headerIndex = i + 1;
i = insertAccountsHeaders(target, headerIndex);
} else if (id == R.id.user_settings) {
if (!UserHandle.MU_ENABLED
|| !UserManager.supportsMultipleUsers()
|| Utils.isMonkeyRunning()) {
target.remove(i);
}
}
else if (id == R.id.development_settings) {
if (!showDev) {
target.remove(i);
}
}
if (target.get(i) == header
&& UserHandle.MU_ENABLED && UserHandle.myUserId() != 0
&& !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, id)) {
target.remove(i);
}
// Increment if the current one wasn't removed by the Utils code.
if (target.get(i) == header) {
// Hold on to the first header, when we need to reset to the top-level
if (mFirstHeader == null &&
HeaderAdapter.getHeaderType(header) != HeaderAdapter.HEADER_TYPE_CATEGORY) {
mFirstHeader = header;
}
mHeaderIndexMap.put(id, i);
i++;
}
}
}