第一次调试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

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

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

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

  2. android上传图片被旋转,input上传照片旋转解决办法

    需求很简单:h5拍照上传照片,然后显示出来 问题在:上传之后的图片在PC,IOS端均能正常显示,Android端显示的则是被旋转90度的. 直接上代码 下面这个方法传入file对象,然后会去除掉照片中 ...

  3. Android Studio首次连接不上网易mumu模拟器解决办法

    在AndroidStudio的Android Monitors里面看不到mumu模拟器的话,按如下操作试试: 如下操作是在已经打开了网易mumu的基础上 1.打开as自带的Terminal   adb ...

  4. Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法

    Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...

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

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

  6. Android 缺少SO库(只有armabi)的解决办法

    Android 缺少SO库(只有armabi)的解决办法 前段时间做一个项目,需要引用一些第三方的插件,结果插件只有armabi的so库,而项目中其他依赖除过armabi的库外基本都有("a ...

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

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

  8. Android应用启动时白色闪屏原因及解决办法

    白色闪屏现象: 如果OnCreate().onStart().onResume()中操作太多,耗时较久.那么就会在主界面显示出来之前出现白色闪屏.为了更清晰的看出白色闪屏,这里在代码中执行50000次 ...

  9. Android之AndroidStudio输入中文不提示候选字解决办法

    Android之AndroidStudio输入中文不提示候选字解决办法 前段时间用AndroidStudio用的好好的,不知道从啥时候开始,AndroidStudio里面输入中文居然出现跳行或者其它一 ...

  10. 【Android教程】Android Studio找不到连接的手机完全解决办法

    Android Studio找不到连接的手机完全解决办法 1.问题背景 现在Android大多都用谷歌的Android Studio来开发 但是 一开始使用Android Studio都不会那么顺利 ...

最新文章

  1. OpenCV进阶篇视频
  2. ACM试题 - 括号配对问题 - Java中字符串截取和定位问题
  3. Linux必知必会的基本命令和部署项目流程
  4. 如何识别媒体偏见_描述性语言理解,以识别文本中的潜在偏见
  5. OpenSSH 6.7 发布 开源ssh服务器软件
  6. C#LeetCode刷题之#290-单词模式(Word Pattern)
  7. android listview 自适应列宽_Android 开发技术周报 Issue#272
  8. 提升你网站水平的 jQuery 插件推荐
  9. Hadoop Flume
  10. 如何寻找互联网红利期产品?
  11. 如何判定某个类的职责是否够“单一”?
  12. 文件类型识别工具:TrID(trid)下载安装及使用
  13. 深度学习-Pytorch:Pytorch 创建CNN神经网络模型【ResNet模型】
  14. oracle wire protocol,WMB 8.0.0.2 在linux下面怎么配置连接ORACLE数据库
  15. 【Kotlin】FarawayPlayer
  16. 解决精灵标注助手暂不支持导入pascal文件
  17. 清华张敏教授:个性化推荐研究进展(可解释性、鲁棒性和公平性
  18. LogisticRegression函数
  19. Java微信开发_Exception_03_errcode:48001 errmsg:api unauthorized hint
  20. 新站如何做SEO及注意事项

热门文章

  1. 记录一下Alphapose安装过程
  2. 《Scrum实战》第2次课【取得大家的支持】课后作业汇总
  3. Java休眠睡眠方法
  4. html5编辑文章如何缩进,关于网页排版和文章编辑那些事
  5. 关于二代测序中duplication产生和占比问题的探讨
  6. Python Selenium自动化测试框架 Test Suite测试套件
  7. Python之爬取58同城在售楼盘房源信息
  8. ffmpeg复杂滤镜-filter_complex
  9. No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a
  10. idea编辑窗口显示outdated version解决方案