Android-代码控制开关

本文介绍了Android系统中两种代码控制开关的方法。第一种常见的是通过编译控制类生成可供框架调用的开关,通常与认证相关。第二种是在配置文件config.xml中设置,适用于有overlay覆盖功能的项目。详细内容包括查找代码控制和开关的定义与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值