第一次调试android5.1的 WIFI更改小功能

Wifi 源码的相关路径目录

packages/apps/Settings/src/com/Android/settings/wifi/

frameworks/base/wifi/java/android/net/wifi/

frameworks/base/services/core/java/com/android/server/connectivity

frameworks/opt/net/wifi/service/java/com/android/server/wifi/

frameworks/base/core/

定位一方面根据屏幕的显示信息,另一方面看logcat捕捉的信息,从中会找到有用的。Logcat会告诉你一些蛛丝马迹。还有就是相关代码分布目录。会用百度谷歌搜索信息,android5.1 wifi、

wifi_no_internet、No Internet Access Detected, won\’t automatically reconnect……………

1、Framework层加打印信息首先声明头文件import android.util.Log;以及TAG是否有。

在加打印信息时,注意上下位置,例如不能在return XX 下面,以及注意变量的名称会变化,对象会变。numNoInternetAccessRepor或者XXX.umNoInternetAccessReports

只能重编吗?

2、packages/apps/Settings/res/ 下是屏幕显示的字符串信息资源,

No Internet Access Detected, won\’t automatically reconnect. 可以在

packages/apps/Settings/src 下搜索Wifi_no_internet 字符串。在哪里打印的出 summary.append(context.getString(R.string.wifi_no_internet));

else if (mConfig != null && mConfig.hasNoInternetAccess())

再跟踪mConfig.hasNoInternetAccess() 函数,

public boolean hasNoInternetAccess() {

Return numNoInternetAccessReports > 0 && !validatedInternetAccess;

}

再跟踪numNoInternetAccessReports,在这点,分了多个方向,需要分析语法,最有可能走那一块。

执行命令 grep numNoInternetAccessReports -rn ./frameworks/

目标在路径如下所示:frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java +7648

需要研究这个函数public boolean processMessage(Message message) {}

查找这个函数 networkStatus()的调用之处。

在frameworks/base/core/java/android/net/NetworkAgent.java +194 case CMD_REPORT_NETWORK_STATUS: {

if (VDBG) {

log(“CMD_REPORT_NETWORK_STATUS(” +

(msg.arg1 == VALID_NETWORK ? “VALID)” : “INVALID)”));

}

networkStatus(msg.arg1);

接着跟踪MD_REPORT_NETWORK_STATUS 在

frameworks/base/services/core/java/com/android/server/ConnectivityService.java +1988

接着跟踪 case NetworkMonitor.EVENT_NETWORK_TESTED在

frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +360

查找这个类private class OfflineState extends State

private final State mOfflineState = new OfflineState()

再查找mOfflineState在

frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +487

研究transitionTo(mOfflineState) 这个函数

根本原因是由于isCaptivePortal()这个函数,定义之处路径在

frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +635

查阅资料是去尝试访问android的一个网址,根据http返回来的值来判断网络是否连接通,其中返回为204时为正常,但由于国内屏蔽了这个网址,故在中国这个功能不适用,所以wifi信号有叹号这个标志。

解决办法是if (!mIsCaptivePortalCheckEnabled) return 204 让这句成立,跟踪代码 调用之处在

mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1;

跟踪Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED

路径在

android-5.1-m200-mr1/frameworks/base/core/java/android/provider/Settings.java +6175

根据提示说明把上面的宏改成0即可关掉这个功能。我们遵循不改动android源码的原则,不直接改动,

在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中添加这样一句话

1

在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +2648

添加loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, R.integer.def_captive_portal_detection_enabled);

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 这个文件是用来生成setting.db的。

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

一般把setting.db中各个表的出厂默认初始值放在这个文件中,在DatabaseHelper.java 中读取。

接着在自己厂商的设备配置文件中添加device/ingenic/dorado/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

在这里面可以重新给宏初始化为0这个值,在编译时先编译android源码,之后再编译到这边,这样可以把之前的给覆盖掉,以后在看代码时能清楚地之道android默认配置是打开的为1。

0

android 5.1感叹号,android 5.1 WIFI图标上的感叹号及其解决办法相关推荐

  1. 笔记本电脑WIFI图标突然不显示的解决办法

    笔记本电脑WIFI图标突然不显示的解决办法 打开笔记本WIFI键 看网络连接中WLAN是否被禁用 修改注册表中文件 打开注册表 打开start文件 修改start初始值 重启WIFI 重启电脑 打开笔 ...

  2. 对于ANDROID 5.0及其以上版本WIFI图标上显示感叹号的原因分析及解决方法

    这里我指的是WIFI可正常连接网络使用的前提下,手机状态栏WIF图标上仍出现感叹号的情况. 原因: 从 Android 5.0 开始,当安卓系统连接网络时,系统会向Google的某个特定的网址(htt ...

  3. Mac已联网,但是WIFI图标一直在闪的解决办法

    问题 解决办法 点击状态栏的WiFi图标,点击最下面的按钮"打开网络偏好设置" 在上面位置的"位置",选择"编辑位置" 添加一个位置,名字随 ...

  4. 【Android】APP嵌入百度地图骑行导航一直初始化引擎失败解决办法

    [Android] APP嵌入百度地图骑行导航一直初始化引擎失败解决办法 最近手头上有个需求需要做骑行导航 首先百度地图开放平台http://lbsyun.baidu.com/ 按提示找到Androi ...

  5. eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动生成 ...

  6. 电脑右下角WIFI图标上出现的长方形白框

    电脑右下角WIFI图标上出现的长方形白框 电脑右下角WIFI图标上出现的长方形白框问题 此为Windows10系统字体问题,将系统字体拿出,重新安装一下即可. 在系统盘找到目录 C:\Windows\ ...

  7. USB转re232转换器(串口线)设备出现感叹号且设备管理器下的端口没有出现,解决办法

    先废话:通常第一次安装是成功的,但是以后出现问题时,又找不到该驱动,所以第一次的时候,跳出来的驱动包要保存到一个文件夹中,以防下次使用. 解决办法: 1.向你网上(实体店那去店里面问咯)买的客服询问要 ...

  8. 电视linux系统怎么连wifi密码错误,智能电视连不上WIFI不用急,6种简单解决办法搞定!...

    原标题:智能电视连不上WIFI不用急,6种简单解决办法搞定! 现在智能电视已经大范围普及,给我们的客厅娱乐带来的很多便利,但是智能电视在使用过程中经常会遇到各种问题,其中连接WiFi失败的问题最为常见 ...

  9. [转]关于 android 5.0 网络图标上的感叹号及其解决办法

    转自:https://xn--yet824cpd.xn--fiqs8s/45.html 升级了安卓5.0的同学们一定对网络图标上面的那个感叹号感到十分郁闷.安卓5.0引入了一种新的网络评估机制来评估网 ...

最新文章

  1. R语言colSums函数、rowSums函数、colMeans函数、rowMeans函数、colMedians函数、rowMedians计算dataframe行或者列的加和、均值、中位数实战
  2. android 动态设置padding,Android动态设置控件大小以及设定margin以及padding值
  3. Elasticsearch基础教程ES
  4. 室内主题元素分析图_主题乐园包装——“树”造型案例精选分享
  5. springboot图书管理怎么实现借书时间到期提醒_智能机器人充当图书管理员,看看它能干嘛...
  6. iis 中后台调用exe文件
  7. android 蓝牙各种UUID (转)
  8. 【编程】不同编程语言的用处(图解)
  9. 漫步数理统计十二——随机变量的期望
  10. 【es-未解决】es 报错 failed to process cluster event (put-mapping) within 30s
  11. 解析 URL Params 为对象
  12. mysql装完是什么样儿的_Win7系统安装MySQL之后找不到指定文件与服务如何解决?...
  13. java算法竞赛入门经典_算法竞赛入门经典笔记(1-3章)
  14. 小程序05 canvas绘图并保存到相册
  15. 微软同步框架入门之四--冲突(Conflict)检测和处理
  16. 项目风险管理武器之离别钩
  17. Java虚拟机如何设置环境变量_如果classpath环境变量没有进行设置,Java虚拟机会自动将其设置为“.”,也就是当前目录。...
  18. 深度盘点:Python 使用和高性能技巧总结
  19. 8. Git 远程协作
  20. 政务云平台建设与运营解决方案 PPT

热门文章

  1. Canvas实现绚丽的倒计时效果(动画效果)
  2. 南昌大学计算机技术专业课,20一战南昌大学计算机技术经验分享
  3. 马克·库班的20条建议:别在不痴迷的行业创业
  4. 选举数据集 (2020 US Election)
  5. 记忆单元属于计算机硬件系统吗,计算机基础-计算机硬件系统
  6. 解决Windows挂起状态
  7. 写python,用哪个软件好。
  8. python绘制彩色蟒蛇 带注释
  9. c语言笔记:c的四舍五入
  10. 国家政策变更造成合同不能履行的,应当解除合同且当事人不承担违约责任