android 9.0打开wifi,Android9.0 SystemUI 屏蔽打开wifi时不显示4G图标的逻辑

Android 9.0 中打开wifi时,不显示4G图标,只有信号值,现项目需求在打开wifi时仍然显示4G图标。

排查及修改过程如下:

systemui/src/com/android/systemui/statusbar/StatusBarMobileView.java

private void updateState(MobileIconState state) {

//省略部分代码

if (mState.typeId != state.typeId) {

if (state.typeId != 0) {

if (!mStatusBarExt.disableHostFunction()) {

mMobileType.setContentDescription(state.typeContentDescription);

mMobileType.setImageResource(state.typeId);

}

mMobileType.setVisibility(View.VISIBLE);

} else {

mMobileType.setVisibility(View.GONE);

}

}

//省略部分代码

}

由此可见当state.typeId=0时,会隐藏mobile_type图标,往上追溯,谁调用了updateState()方法:

public void applyMobileState(MobileIconState state) {

//省略部分代码

if (!mState.equals(state)) {

updateState(state.copy());

}

}

一步一步查看调用关系,追溯到

systemui/src/com/android/systemui/statusbar/policy/MobileSignalController.java的notifyListeners()方法:

@Override

public void notifyListeners(SignalCallback callback) {

//省略部分代码

// Show icon in QS when we are connected or data is disabled.

boolean showDataIcon = mCurrentState.dataConnected || dataDisabled;

//省略部分代码

showDataIcon &= mCurrentState.isDefault || dataDisabled;

int typeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.mDataType : 0;

//省略部分代码

callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, networkIcon, volteIcon,

qsTypeIcon,activityIn, activityOut, dataContentDescription, description,

icons.mIsWide, mSubscriptionInfo.getSubscriptionId(), mCurrentState.roaming,

mCurrentState.isDefaultData);

//省略部分代码

}

代码中有个配置:

mConfig.alwaysShowDataRatIcon

跟进去到NetworkControllerImpl.java的内部类Config:

@VisibleForTesting

public static class Config {

public boolean showAtLeast3G = false;

public boolean alwaysShowCdmaRssi = false;

public boolean show4gForLte = false;

public boolean hideLtePlus = false;

public boolean hspaDataDistinguishable;

public boolean inflateSignalStrengths = false;

public boolean alwaysShowDataRatIcon = false;

static Config readConfig(Context context) {

Config config = new Config();

//省略部分代码

CarrierConfigManager configMgr = (CarrierConfigManager)

context.getSystemService(Context.CARRIER_CONFIG_SERVICE);

PersistableBundle b = configMgr.getConfig();

if (b != null) {

config.alwaysShowDataRatIcon = b.getBoolean(

CarrierConfigManager.KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL);

}

return config;

}

}

然后跟踪到framework代码CarrierConfigManager.java中:

/**

* Boolean indicating if show data RAT icon on status bar even when data is disabled

* @hide

*/

public static final String KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL =

"always_show_data_rat_icon_bool";

//默认值给的false

sDefaults.putBoolean(KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL, false);

所以修改策略为将此默认值改为true.

另外可以用命令

adb shell dumpsys carrier_config

查看配置信息,配置信息如图:

a0093fa3165d

图片.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值