Android设备,连接可用的WiFi,提示“Connected, no Internet”怎么回事呢?(这个时候其实是可以上网的)

产生上面描述的这种现象是因为这个“Captive Portal”导致的。

Captive Portal 介绍

“Captive Portal “中文通常译作“强制主页”或“强制登录门户”。是一个登录Web页面,通常由网络运营商或网关在用户能够正常访问互联网之前拦截用户的请求并将一个强制登录或认证主页呈现(通常是通过浏览器)给用户。该页面可能要求用户输入认证信息、支付、接受某些条款或者其他用户授权等,随后用户才能被授权访问互联网。该技术广泛用于移动和个人宽带服务,包括有线电视、商业WiFi、家庭热点等,也可用于访问企业和住宅区有线网络。

作者:神农民
链接:https://www.jianshu.com/p/b4da31480f2c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

那么Android是支持这个功能的。它的实现逻辑在NetWorkMonitor中。当一个网络连接建立时,系统将用该连接Ping一个Google的网站来判断该连接是否真的可以上网。我们知道,在大陆,有的网站是不能访问的,那么默认的Google的网站是不能正常访问的,导致能够连接上,能够访问网络,但是还是会提示”no Internet“。

下面结合代码进行简要的说明,和修改方法。

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

// Default configuration values for captive portal detection probes.// TODO: append a random length parameter to the default HTTPS url.// TODO: randomize browser version ids in the default User-Agent String.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";

原生代码中提供的网址来判断是否正的可以上网。修改这个网址为在大陆可以访问的网址就可以修复这个问题。你可以试试。

还有一种修改方法:

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

protected boolean mIsCaptivePortalCheckEnabled;mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(),Settings.Global.CAPTIVE_PORTAL_MODE, Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT)!= Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE;protected CaptivePortalProbeResult isCaptivePortal() {if (!mIsCaptivePortalCheckEnabled) {validationLog("Validation disabled.");return new CaptivePortalProbeResult(204);}

根据代码逻辑,通过一个标志位mIsCaptivePortalCheckEnabled来判断是否进行判断当前网络是否可以上网。那么可以将该flag设置为False即可解决这个问题了。

Android连接可用WIFI后显示“Connected, no Internet”原因以及解决方案相关推荐

  1. 戴尔Win10笔记本连接wifi后显示“无internet,安全”但可正常上网

    menu 1 问题表现和一些解决方法 2 我使用的且真实有用的方法 3 谢谢评论区的这位大哥! 自从上次因为把笔记本放在铁质书架上导致蓝牙不可用后,对这样的问题我真是不觉得奇怪了. 最easy的解决方 ...

  2. Win11连接WiFi后显示无Internet访问权限怎么办?

    Win11连接WiFi后显示无Internet访问权限怎么办?许多用户在使用电脑的时候,为了便利,都会使用到WiFi,而不少用户在使用的时候也会遇到一些问题,下面小编就带着大家一起看看吧! 更多系统教 ...

  3. Win11连接WiFi后显示“无Internet,安全”

    在连接WiFi后显示"无Internet,安全",然后我根据Win10的修改方法找到了Win11的修改方法. 步骤一:右键 "开始",点击"终端(管理 ...

  4. 华为连接wifi显示wifi未连接服务器,华为手机连上WiFi后显示不可上网?其实很简单,用这个解决就好了...

    原标题:华为手机连上WiFi后显示不可上网?其实很简单,用这个解决就好了 一直以来都有很多的小伙伴反应,华为手机经常会出现WiFi连接不上,以及WiFi连接之后不可上网的情况,并且是大家都用同一个网, ...

  5. Android 虚拟按键隐藏或显示之后共享元素动画异常解决方案

    背景 本篇算是共享元素的第三篇文章.主要还是因为第一篇才会衍生出来了第二篇和第三篇文章,后两篇均属于bug的分析和解决. 1.Android 仿微信朋友圈图片拖拽返回 2.Android 共享元素动画 ...

  6. 电脑不显示无线连接网络连接服务器,连接wifi后显示无internet访问权限怎么解决...

    Win10 wifi连接后显示无法上网怎么办?对很多网友来说这有多不清楚?其实这只是几个问题,那么到底是什么问题呢?下面小编就为您简要介绍一下计算机网络技术吧! Win10连接wifi信号有限,且没有 ...

  7. win10连Wifi后显示无Internet连接的解决办法

    系统:windows10 情况:连接无线网络后,显示无Internet连接.尝试用360修复,有时候能修复成功,虽然还是显示无Internet连接,但是暂时可以上网,过一段时间后,又无法上网,需要强力 ...

  8. android+连接隐藏wifi,SSID隐藏后手机如何连接?手机连接隐藏ssid无线网络教程

    尽管无线路由器设置隐藏SSID,可以在一定程度上防止被蹭网,但也会带来一些小麻烦,比如SSID隐藏了,自己的智能手机.平板以及笔记本等无线设备又该如何连接隐藏SSID无线网络呢?其实也很简单,只要记住 ...

  9. android连接酒店wifi,Android 在APP内、应用内 连接WiFi

    Android 在应用内连接特定的WiFi 首先需要在AndroidManifext.xml中添加以下权限 通过如下代码,可以实现连接到这个ssid的WiFi String ssid = " ...

最新文章

  1. chosen.jquery.js 有搜索功能、多选功能的下拉框插件
  2. java JDK 11.0.5的安装
  3. 修改密码后服务器断开连接,SSH无需密码登录服务器且保持连接不断开的方法
  4. POJ 1184 聪明的打字员
  5. 在Mac下安装使用OpenCV
  6. 字符设备驱动笔记(一)
  7. MySQL基础部分总结
  8. c程序预处理器的设计与实现_C预处理器-能力问题与解答
  9. Python字符串index()方法应用案例一则
  10. python 路径的操作
  11. 吃自己的狗食,用自己的产品——再谈华为芯片
  12. 抽象类应用模板方法模式和接口应用之策略设计模式
  13. oracle及mysql错误记录
  14. keychron的机械键盘
  15. beyond compare this license key has been revoked
  16. 内存马涉及基础知识整理
  17. Js篇-面试题9-请说一下Js中的事件循环机制
  18. python爬虫实例手机_10个python爬虫入门实例
  19. 95文件及文件夹操作实践
  20. Fiddler抓包工具配置--IE、Chrome

热门文章

  1. 【算法】跑ORB-SLAM3遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)
  2. 从零开始掌握 HAProxy 负载均衡器
  3. 【Linux】Linux 权限和权限管理
  4. android 摄像头花屏_关于Android 4.4相机预览、录像花屏的问题的解决方法
  5. 花色苷植物代谢物质靶向代谢检测
  6. Python新手上路-基本语法元素
  7. r语言中Y=aX1-bX2 c是什么意思,R语言中的算术,您未必都知道
  8. Downcast for Mac(视频播客软件)教程
  9. Unity3D之人物头顶名称与血条更新与绘制
  10. Numpy ravel和flatten区别