Android WIFI-系统连接WIFI显示网络连接受限

问题描述


使用Android设备打开设置,选择WIFI输入正确密码连接,会显示已连接,无网络,然后变成网络连接受限,实际可以使用此WIFI进行上网。

问题分析


异常Log

D NetworkMonitor/100: PROBE_DNS www.google.com 107ms OK 104.244.46.85
D NetworkMonitor/100: PROBE_DNS connectivitycheck.gstatic.com 118ms OK 203.208.50.66
D NetworkMonitor/100: PROBE_HTTP http://connectivitycheck.gstatic.com/generate_204 time=35ms ret=302 request={Connection=[close], User-Agent=[Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.32 Safari/537.36]} headers={null=[HTTP/1.0 302 Moved Temporarily], Allow=[GET,POST,HEAD], Location=[http://10.10.1.2:8080/cn/index.html], MIME-Version=[1.0], Pragma=[No-Cache], Server=[AP Server 1.0], X-Android-Received-Millis=[1615220820212], X-Android-Response-Source=[NETWORK 302], X-Android-Selected-Protocol=[http/1.0], X-Android-Sent-Millis=[1615220820196]}
D NetworkMonitor/100: PROBE_HTTPS https://www.google.com/generate_204 Probe failed with exception javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
D NetworkMonitor/100: isCaptivePortal: isSuccessful()=false isPortal()=true RedirectUrl=http://10.10.1.2:8080/cn/index.html isPartialConnectivity()=false Time=172ms



从Log中可以看出来,连接WIFI会进行网络的校验,从而判断是否可用,HTTP校验成功,但是HTTPS校验失败,因此会显示网络连接受限,其连接过程中会出现短暂的已连接,无网络是正常现象。HTTPS校验的网址https://www.google.com/generate_204,由于在国内无法访问,所以会校验失败,可采取的做法是替换此网址。

packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java 

#校验源码部分
private CaptivePortalProbeResult sendDnsAndHttpProbes(ProxyInfo proxy, URL url, int probeType) {// Pre-resolve the captive portal server host so we can log it.// Only do this if HttpURLConnection is about to, to avoid any potentially// unnecessary resolution.final String host = (proxy != null) ? proxy.getHost() : url.getHost();// This method cannot safely report probe results because it might not be running on the// state machine thread. Reporting results here would cause races and potentially send// information to callers that does not make sense because the state machine has already// changed state.sendDnsProbe(host);return sendHttpProbe(url, probeType, null);
}# HTTPS网址相关源码
private final URL mCaptivePortalHttpsUrl;
mCaptivePortalHttpsUrl = makeURL(getCaptivePortalServerHttpsUrl());
public String getCaptivePortalServerHttpUrl() {return getSettingFromResource(mContext, R.string.config_captive_portal_http_url,R.string.default_captive_portal_http_url, CAPTIVE_PORTAL_HTTP_URL);
}



解决方案


packages/modules/NetworkStack/res/values/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>
+ <string name="default_captive_portal_https_url" translatable="false">https://developers.google.cn/generate_204</string>


网上还有另一种解法如下,就是关闭校验,此解法可以实现不显示网络连接受限的问题,但是在连接需要登陆的WIFI时,无法连接

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

loadSetting(stmt, Settings.Global.LID_BEHAVIOR, defaultLidBehavior);
loadStringSetting(stmt, Settings.Global.NTP_SERVER_2,R.string.def_ntp_server_2);
+ loadSetting(stmt, Global.CAPTIVE_PORTAL_MODE, Global.CAPTIVE_PORTAL_MODE_IGNORE);


关于captive_portal_mode的值
0:彻底禁用检测
1:检测到需要登录则弹窗提醒(默认值)
2:检测到需要登录则自动断开此热点并不再自动连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构【哈夫曼树】

哈夫曼树 哈夫曼树的概念哈夫曼树的构造构造算法的实现哈夫曼树应用哈夫曼编码哈夫曼编码的算法实现 哈夫曼树的概念 最优二叉树也称哈夫曼 (Huffman) 树&#xff0c;是指对于一组带有确定权值的叶子结点&#xff0c;构造的具有最小带权路径长度的二叉树。权值是指一个与特定结…

Redis持久化

Redis 持久化 redis 提供了两种持久化的方式&#xff0c;分别是RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。 RDB&#xff0c;简而言之&#xff0c;就是在不同的时间点&#xff0c;将 redis 存储的数据生成快照并存储到磁盘等…

MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoTemplate完成增删改查

传送门&#xff1a; MongoDB文档--基本概念_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&#xff08;mongodb环境搭建&#xff09;-docker安装&#xff08;挂载数据卷&#xff09;-以及详细版本对比_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&…

[原创]从强化学习的本质推导到PPO

前言 这篇博客很久之前就想做了&#xff0c;一直在拖是因为觉得自己对知识点理解还没有足够的透彻。但是每当去复盘基本概念的时候又很难理清逻辑&#xff0c;所以觉得即便现在半吊子水平&#xff0c;但是也想通过博客记录一下自己肤浅的学习心得&#xff0c;权当是为自己巩固…

加拿大量子研究新动作!D-Wave与滑铁卢大学合作研究量子相干性

​ &#xff08;图片来源&#xff1a;网络&#xff09; D-Wave是量子计算系统、软件和服务的领导者&#xff0c;也是量子计算机的第一家供应商。近期&#xff0c;D-Wave宣布与滑铁卢大学量子计算研究所&#xff08;IQC&#xff09;达成两项新合作。他们为量子计算系统建立了关键…

C/C++面试经历(一)

目录 1. 说说你对C与C的认识&#xff1f; 2. 说说C的三大特性&#xff1f; 3. 说说C的重载&#xff1f; 4. C语言为什么不支持重载&#xff1f; 5. 说说类的默认成员函数&#xff1f; 6. 类的构造函数为什么不支持虚函数&#xff1f; 7. 说说你对指针和引用的理解&…

【计算机网络】网络层协议 -- ICMP协议

文章目录 1. ICMP协议简介2. ICMP协议格式3. ping命令4. ping命令与端口号没有关系&#xff01;&#xff01;&#xff01;5. traceroute命令 1. ICMP协议简介 ICMP&#xff08;Internet Control Message Protocol&#xff0c;控制报文协议&#xff09;&#xff0c;用于在IP主机…

无代码集成明道云与更多应用连接

明道云是一个APaaS平台&#xff0c;可以帮助用户快速搭建个性化企业应用&#xff0c;用户不需要代码开发就能够搭建出用户体验上佳的销售、运营、人事、采购等核心业务应用&#xff0c;打通企业内部数据&#xff0c;也能够通过API和Webhook和其他系统对接。 场景描述&#xff…

libcurl网络库的函数接口使用

文章目录 1、libcurl简介2、libcurl的使用3、函数简介4、 curl_easy_setopt函数部分选项介绍5、curl_easy_perform 函数说明&#xff08;error 状态码&#xff09;6、简单实例,包含库文件&#xff0c;头文件即可 1、libcurl简介 libcurl是一个跨平台的网络协议库&#xff0c;支…

消息队列(3) -封装数据库的操作

前言 上一篇博客我们写了, 关于交换机, 队列,绑定, 写入数据库的一些建库建表的操作 这一篇博客中,我们将建库建表操作,封装一下实现层一个类来供上层服务的调用 , 并在写完该类之后, 测试代码是否完整 实现封装 在写完上述的接口类 与 xml 后, 我们想要 创建一个类 ,来调用…

Python的PyHook3插件使用详解

Python的PyHook3插件使用详解 上代码 上代码 def OnMouseEvent(event):print(MessageName:,event.MessageName)print(Message:,event.Message)print(Time:,event.Time)print(Window:,event.Window)print(WindowName:,event.WindowName)print(Position:,event.Position)print(W…

PAT 1065 A+B and C (64bit)

个人学习记录&#xff0c;代码难免不尽人意。 Given three integers A, B and C in (−263,263), you are supposed to tell whether AB>C. Input Specification: The first line of the input gives the positive number of test cases, T (≤10). Then T test cases foll…

uniapp实现支付宝菜单展开与收起

需求实现支付宝类似的效果&#xff1a; 思路&#xff1a; 1.首先建立展开收起按钮&#xff0c;这里使用的是uview里面的icon图标。 2.其次建立展开菜单内容&#xff0c;这里只演示了文本信息&#xff0c;后期引入首页应用。 3.最后写js逻辑&#xff0c;展开收起时改变盒子高度和…

基于STM32设计的出租车计费系统

一、项目介绍 在城市交通中&#xff0c;出租车是一种常见的交通工具。为了方便乘客和司机之间的交易&#xff0c;出租车计费系统被广泛应用于出租车行业。系统能够自动计算乘客的费用&#xff0c;提供准确、方便的计费服务&#xff0c;并且能够记录乘客的行驶数据&#xff0c;…

flink kafka消费者如何处理kafka主题的rebalance

背景&#xff1a; 我们日常使用kafka客户端消费kafka主题的消息时&#xff0c;当消费者退出/加入消费者组&#xff0c;kafka主题分区数有变等事件发生时&#xff0c;都会导致rebalance的发生&#xff0c;此时一般情况下&#xff0c;如果我们不自己处理offset&#xff0c;我们不…

面试题:HTTP Code码及应用场景分析

1xx 消息(临时响应) 属于临时相应&#xff0c;代表所发出的请求已经被接受&#xff0c;需要继续进行处理。只包含状态行和某些可选的响应头信息&#xff0c;并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码&#xff0c;所以除非在某些试验条件下&#xff0c;服务器…

django处理分页

当数据库量比较大的时候一定要分页查询的 在django中操作数据库进行分页 queryset models.PrettyNum.objects.all() #查询所有 queryset models.PrettyNum.objects.all()[0:10] #查询出1-10列 queryset models.PrettyNum.objects.filter(mobile__contains136)[0:10] …

登陆校验解决前端success回调函数始终执行问题

有一串前端js登陆代码&#xff1a; sendRequest:function(){wx.request({url: http://localhost:8080/lf/login/2021/2021,method:POST,success:(res) > {console.log("测试通过")}})} 和后端代码&#xff1a; public Result<Students> logginById(PathVar…

python-opencv对极几何 StereoRectify

OpenCV如何正确使用stereoRectify函数 函数介绍 用于双目相机的立体校正环节中&#xff0c;这里只谈谈这个函数怎么使用&#xff0c;参数具体指哪些函数参数 随便去网上一搜或者看官方手册就能得到参数信息&#xff0c;但是&#xff01;&#xff01;相对关系非常容易出错&…

OpenAI将GPT-4设置为ChatGPT Plus付费用户的默认模型

OpenAI最近为ChatGPT引入了一系列新功能&#xff0c;这些更新旨在增强用户体验&#xff0c;提供更多指导和更多的功能。其中最显著的功能之一是将GPT-4设置为ChatGPT Plus付费用户的默认模型&#xff0c;这意味着付费订阅用户无需手动切换到其他公开可用的语言模型&#xff0c;…