(4.1源码)
一:第一种(常见的):通过编译的控制类生成可供框架调用的开关
1:查找代码控制: frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java下(状态栏view创建类):
if (FeatureQuery.FEATURE_NOTIFICATION_BAR_DATA_SWITCH)
{
mDataEnabled = (Switch) mStatusBarWindow.findViewById(R.id.network_switch);
mDataEnabled.setOnCheckedChangeListener(mDataEnabledListener);
mMobileDataEnabled = mConnService.getMobileDataEnabled();
mDataEnabled.setChecked(mMobileDataEnabled);
mSettingNetWork = (TextView) mStatusBarWindow.findViewById(R.id.settings_label);
mSettingNetWork.setOnClickListener(mSettingNetworkListener);
}
else
{....
}
“FeatureQuery.FEATURE_NOTIFICATION_BAR_DATA_SWITCH”是控制开关控制 ,它定义在:buid/buildplus/buildspec/ct.spec:
FEATURE_NOTIFICATION_BAR_NETWORK_CHOOSE = yes
FEATURE_NOTIFICATION_BAR_DATA_SWITCH = yes
该文件在make -j4编译后在buid/buildplus/target/下生成FeatureQuery.java:
......
public static boolean FEATURE_NOTIFICATION_BAR_DATA_SWITCH = true;
public static boolean FEATURE_NOTIFICATION_BAR_NETWORK_CHOOSE = true;
......
即:
yes---true;
no----false;
注:FeatureQuery.java存的全是boolean型的变量;最初target目录里只有empty,剩下的都是后来生成的。
2:修改:将
FEATURE_NOTIFICATION_BAR_NETWORK_CHOOSE = no
FEATURE_NOTIFICATION_BAR_DATA_SWITCH = no
然后重新编译即可。
备注:本次所说的这类开关与认证有关,通常我们控制代码用的开关只需要像“代码控制开关的定义和使用”那样在msm8625.mk中定义即可;后期专栏介绍。
二:第二种:在配置文件config.xml中,这类只限于有device/qcom/msm8625(或xxxx其他)中有overlay覆盖功能的项目中。(该条只是随笔,读者无须理会)