Android为了对网络状态进行检测,采用了一种叫做captive detection的方式进行网络状态检测。其实说起来很简单,每当连接到一个网络,比如移动数据网络或者WIFI的时候,Android的NetworkMonitor模块会构造一个http/https的请求,发送到指定的服务器,然后利用收到的响应进行网络状态判断。

安卓手机网络状态有如下几种状态:

  1. 根本就没有返回,这种情况代表当前没有Internet访问;
  2. 返回状态码204,这种情况代表具备完整的Internet访问(特定的服务器专门返回204的状态码);
  3. 除204以外的其他大于200而小于400的状态码,这种状态码一般代表需要进行Web登录的网络连接,比如机场、商场提供的需要短信登录的网络。这种情况下Android会构造一个可能需要登录的状态栏通知以通知用户可能需要进行登录。

安卓类原生ROM刷机包默认的204服务器是由谷歌提供,由于谷歌在我国大陆区不可访问。wifi有叹号或打叉这都是正常的,因此,不要再见到WiFi的叹号就向ROM作者反馈bug啦,那根本就不是bug!

安卓9以下版本ROM修改204服务器教程:
源码位置:frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java

原代码:

private static final String DEFAULT_HTTPS_URL="https://www.google.com/generate_204";private static final String DEFAULT_HTTP_URL="http://connectivitycheck.gstatic.com/generate_204";private static final String DEFAULT_FALLBACK_URL="http://www.google.com/gen_204";private static final String DEFAULT_OTHER_FALLBACK_URLS="http://play.googleapis.com/generate_204";

修改为:

private static final String DEFAULT_HTTPS_URL="https://connect.rom.miui.com/generate_204";private static final String DEFAULT_HTTP_URL="http://connect.rom.miui.com/generate_204";private static final String DEFAULT_FALLBACK_URL="http://connect.rom.miui.com/generate_204";private static final String DEFAULT_OTHER_FALLBACK_URLS="http://connect.rom.miui.com/generate_204";

重新编译,解决。

安卓10以上版本ROM修改204服务器教程:
Android 10,我们发现frameworks/base/services/core/java/com/android/server/connectivity/下已经没有了NetworkMonitor。原来,自Android Q开始,网络状态由networkstack判断,相应的,我们依然通过修改204服务器来解决这个问题。
源码位置:packages/modules/NetworkStack/res/config.xml
原代码:

<!-- HTTP URL for network validation, to use for detecting captive portals. --><string name="default_captive_portal_http_url" translatable="false">http://connectivitycheck.gstatic.com/generate_204</string><!-- HTTPS URL for network validation, to use for confirming internet connectivity. --><string name="default_captive_portal_https_url" translatable="false">https://www.google.com/generate_204</string><!-- List of fallback URLs to use for detecting captive portals. --><string-array name="default_captive_portal_fallback_urls" translatable="false"><item>http://www.google.com/gen_204</item><item>http://play.googleapis.com/generate_204</item></string-array>修改为:<!-- HTTP URL for network validation, to use for detecting captive portals. --><string name="default_captive_portal_http_url" translatable="false">http://connect.rom.miui.com/generate_204</string><!-- HTTPS URL for network validation, to use for confirming internet connectivity. --><string name="default_captive_portal_https_url" translatable="false">https://connect.rom.miui.com/generate_204</string><!-- List of fallback URLs to use for detecting captive portals. --><string-array name="default_captive_portal_fallback_urls" translatable="false"><item>http://connect.rom.miui.com/generate_204</item><item>http://connect.rom.miui.com/generate_204</item></string-array>

Android 11.0 NetworkMonitor导致的wifi连接后显示x问题解决方法相关推荐

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

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

  2. Android 11.0 SystemUI导航栏固定在底部显示的修改

    目录 1.概述 2.SystemUI导航栏固定在底部显示的修改的相关代码

  3. Android 11.0 12.0系统默认开启wifi

    1.概述 在11.0 12.0的系统中产品开发中,系统的wifi功能是默认关闭的,由于项目需要要求默认打开wifi,开机后直接连wifi就可以了 所以需要找到系统默认的关闭wifi的地方 打开wifi ...

  4. Android 11.0 Settings源码分析 - 主界面加载

    Android 11.0 Settings源码分析 - 主界面加载 本篇主要记录AndroidR Settings源码主界面加载流程,方便后续工作调试其流程. Settings代码路径: packag ...

  5. Android 系统,Wifi连接后,显示wifi已连接但无法访问网络。

    7.1系统8.0系统,Wifi连接后,显示wifi已连接但无法访问网络. 原因: 连接wifi后,会访问google服务器,由于国内访问不了,所以会显示"wifi已连接,但无法访问网络&qu ...

  6. MTK Android 11.0:充电低电指示灯会被未读消息信号灯灭掉,无优先级控制。

    MTK Android 11.0:充电低电指示灯会被未读消息信号灯灭掉,无优先级控制: 1.电池充电.低电状态提示(红绿双色).(LIGHT_ID_BATTERY) 小于15%时: A 正在充电 亮红 ...

  7. Android 11.0 支持exFAT文件系统

    Android 11.0 支持exFAT文件系统 U盘常见文件系统类型有FAT32.NTFS.exFAT, Android默认支持FAT32,  一般也有NTFS类型编译选项, 但是exFAT由于版权 ...

  8. Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限

    目录 1.概述 2.Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限的核心类 3.Android 11.0 无源码apk授予QUERY_ALL_

  9. Android 11.0 支持exfat格式

    点滴积累,记录自己的成长. 最近系统要支持exfat格式,参考了大佬们的帖子之后,终于搞定了. 由于之前都是Android.mk,自己系统中使用的Android.bp,而且要求以模块的形式调用对应的k ...

最新文章

  1. Scons构建C++项目
  2. Zabbix 3.2.6 通过Discovery批量监控Oracle表空间
  3. 跳出数据计算拯救人工智能之打败机器学习方法详解
  4. Redis集群解决方案比较
  5. 莫博士:Facebook别再推诿,请承担打击假新闻责任
  6. oracle 设置查询条数,SQL、MySQL、Oracle、 Sqlite、Informix数据库查询指定条数数据的方法...
  7. Ubuntu系统中利用Sublime分别运行Python与Python3
  8. .net Reactor之exe、dll文件混淆
  9. Ubuntu14.04如何使用root登录
  10. 2019.1.23 01迷宫
  11. BZOJ2425: [HAOI2010]计数
  12. php中的常用魔术方法总结
  13. WMS系统多少钱?什么是WMS系统
  14. 基于单片机的功放protues_基于单片机的音乐播放器设计
  15. 虚幻4UE4使用PS4 DualShock4手柄ProController Switch手柄
  16. C++派生类与继承(超详细)
  17. 微软亚洲研究院 (MSRA) 的实习体验如何?
  18. java抢红包线段分割法_抢红包算法——线段分割法
  19. 人工神经网络课后题答案,人工神经网络原理答案
  20. 区块链技术及应用发展概述

热门文章

  1. 数据科学导引欧高炎重点知识一
  2. Jira项目管理配置指南(三)—— 其他配置与总结
  3. 使用dede系统建设中英文双语网站详解
  4. 函数式编程是如何提升代码的扩展性
  5. Cisco Packet Tracert 无线路由器配置
  6. go语言中的文件file操作
  7. 数理方程及MATLAB解算学习笔记
  8. 0014 c语言 数字分隔
  9. Win软件 - Logitech G HUB 鼠标 DPI 突快突慢解决方案
  10. EOS系列 - 超级节点的硬件要求