Android-代码控制开关

来源:互联网 发布:windows域登录 编辑:程序博客网 时间:2024/05/17 00:59

(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覆盖功能的项目中。(该条只是随笔,读者无须理会)