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

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

图片.png

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

  1. Android 双目 单usb,【android9.0】无法打开usb uvc camera

    背景:android9.0系统的开发板,接入双目摄像头,仅能打开其中一路摄像头,另一路打不开 关键log: 从串口打印看,usb驱动有正确识别到usb hub以及两路usb camera设备 [ 45 ...

  2. android sdk 9.0下载地址,Android9.0对非 SDK 接口的限制

    Android9.0对非 SDK 接口的限制 发布时间:2018-10-19 12:00, 浏览次数:919 , 标签: Android SDK 在 Android 9.0 版本中,谷歌加入了非 SD ...

  3. oppo手机彩蛋android 9.0,论升级Android9.0的速度,vivo完胜OPPO

    原标题:论升级Android9.0的速度,vivo完胜OPPO 集微网消息(文/数码控),在OPPO.vivo这两大手机厂商之间,要说升级Android9.0操作系统的速度,从目前已知的消息看,是vi ...

  4. Android rom开发:mtk android9.0 开放预置app权限

    适用于mtk android 9.0 diff --git a/frameworks/base/services/core/java/com/android/server/pm/permission/ ...

  5. android 9.0 https 适配,android9.0适配HTTPS:not permitted by network security policy'

    express框架 一.express的使用 安装express 在根目录下输入 npm install express 引入express的包 const express = require(&qu ...

  6. android9.0蓝牙功能,Android9.0 蓝牙开启流程

    微信扫码,给个关注吧 第一次接触蓝牙,先从蓝牙的开启流程入手吧,借此顺便熟悉一下蓝牙的代码架构. 1.UI /packages/apps/Settings/src/com/android/settin ...

  7. android poi webview,java-Android(4.4)WebView第二次加载时不显示ifra...

    我正在尝试从本地存储在webview页面中显示,第一次加载页面时看起来还可以,但是当我删除webview并再次添加它时,它看起来像在图片上(对于4.4,在以前的android版本中只是黑屏): web ...

  8. MTK Android O 充电状态下电池电量100%时不显示闪电图标

    需求: android 8.1.1版本google原生充电的时候都会显示一个闪电的形状,客户要求在百分之百电量的时候不显示闪电 修改: frameworks\base\packages\Setting ...

  9. Android之通过用户名和密码连接指定wifi热点(兼容Android9.0和Android10.0和addNetwork(wifiNewConfiguration)返回-1问题)

    1 需求 通过用户名和密码连接指定wifi热点,网上的代码乱七八糟,没几个可以用,我这边整理了下,测试了华为Android9.0和小米Android9.0和10.0和OPPO Android9.0 都 ...

最新文章

  1. UI组件之AdapterView及其子类(五)ListView组件和ListActivity
  2. 用matlab做一个有刻度的网格,已知45个点X Y Z的坐标值已知,如何用matlab画出网格图,另外每个小方格里带颜色 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  3. python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...
  4. JQ实现情人节表白程序
  5. java中的局部变量、成员变量、类变量
  6. [精华] VI高级命令集锦
  7. TP5 急速上手 语法规则
  8. 用@Scheduled完成定时任务
  9. C# 关键字--using
  10. poj3579 Median
  11. 调试神器SEGGER_RTT移植使用
  12. unicode 表情对照表
  13. 计算机网络——谢希仁
  14. 商品评论情感分析——基于商品评论建立的产品综合评价模型(1)
  15. linux shell 中数组的定义和for循环遍历
  16. 如何看待中科院合肥研究院 90 多名科研人员集体辞职?
  17. 【Python入门】人生苦短,我用Python
  18. java lambda 画蛇添足_技术史上的画蛇添足: Redis HGETALL 排序问题
  19. RPG角色扮演C++
  20. 计算机系统设计原理pdf百度云,计算机操作系统教程--核心与设计原理习题1答案.pdf...

热门文章

  1. Checkbox与RadioGroup的使用方法
  2. .Net Micro Framework研究—让MF支持鼠标
  3. 非root用户安装protobuf的python依赖到指定目录
  4. 1356. 根据数字二进制下 1 的数目排序
  5. docker image设置jdk版本_Docker 部署 Spring Boot
  6. 微信语音麦克风静音_智能语音专题(二):语音信号处理
  7. c语言编译为机器语言过程,C语言编译全过程
  8. 微服务乱码_本地正常服务器乱码
  9. java objective-c,Objective-C基础教程学习笔记(附录)从Java转向Objective-C
  10. 企业微信接收消息服务器配置php,微信企业号配置及在公众号里获取用户信息