Android5.1
机器没有刷入基带时,在Settings - About tablet中,Baseband version那栏显示Unknown
现在希望在未知基带版本时不显示这一栏
参考《Android5.1 壁纸来源选项中有两个“壁纸”选项》,可知这些设置说明是动态加载的Fragment
首先找到加载About tablet的地方
packages/apps/Settings/src/com/android/settings/ DeviceInfoSettings.java
可以看到 public class DeviceInfoSettings extends SettingsPreferenceFragment implements Indexable
寻找关于基带的信息
private static final String KEY_BASEBAND_VERSION = "baseband_version";
......
setValueSummary(KEY_BASEBAND_VERSION,"gsm.version.baseband");
......//Remove Baseband version if wifi-only device
if(Utils.isWifiOnly(getActivity())) {
getPreferenceScreen().removePreference(findPreference(KEY_BASEBAND_VERSION));
}
......private voidsetValueSummary(String preference, String property) {try{
findPreference(preference).setSummary(
SystemProperties.get(property,getResources().getString(R.string.device_info_default)));
}catch(RuntimeException e) {//No recovery
}
}
仅支持wifi,不支持SIM卡的机器是不显示基带版本的
setValueSummary中,取用了R.string.device_info_default
搜索device_info_default可得“未知”、“Unknown”等等
添加删除Baseband的判断条件,参考setValueSummary里使用的方法
private booleanisNoBaseband() {//添加这个方法,判断基带版本
returnSystemProperties.get(KEY_BASEBAND_VERSION,
getResources().getString(R.string.device_info_default))
.equals(getResources().getString(R.string.device_info_default));
}//Remove Baseband version if wifi-only device 加一个判断条件
if (Utils.isWifiOnly(getActivity()) ||isNoBaseband()) {
getPreferenceScreen().removePreference(findPreference(KEY_BASEBAND_VERSION));
}
千万不能使用具体的字符串来判断
比如这样:
SystemProperties.get(KEY_BASEBAND_VERSION,getResources().getString(R.string.device_info_default))
.equals("Unknown")
如果换了一个系统语言,比如换成中文;那这个判断就失效了
修改完成后,编译push进去,可看到效果