2021-12-07 AndroidR(11) 连接WIFI可以上网,但是提示“No Internet”,增加一个国内可以访问的http_urls网站就可以解决问题

一、目前Android引入的网络评估机制,当你连上网络后,会给目标产生204响应的服务器发送给一个请求,如果服务器返回的是状态码为204的响应,那么就被认为网络可以访问;否则,如返回的是其他状态码,那么将被视为网络访问需要登录操作等;没有响应的话,就被认为是网络不可访问。

二、产生这个问题的原因是Android系统默认测试网络的连接是用的google相关的域名,在国内网络无法访问,所以造成即手机连上网络也会提示“No Internet”。

三、解决方案一:暴力Disabled这个功能,把mIsCaptivePortalCheckEnabled 设置为false,实际测试是可以的。   

     1、文件路径:packages\modules\NetworkStack\src\com\android\server\connectivity\NetworkMonitor.java

     2、生效的地方:

四、解决方案二:增加一个国内可以访问的http_urls网站、当一个urls不能访问的时候访问另外一个,这里我增加http://connect.rom.miui.com/generate_204。下面是整个修改的内容:

diff --git a/packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java b/packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
index 40de26e..3ee26fe 100755
--- a/packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
+++ b/packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
@@ -2311,7 +2311,7 @@ public class NetworkMonitor extends StateMachine {
 
         long startTime = SystemClock.elapsedRealtime();
 
-        final CaptivePortalProbeResult result;
+        CaptivePortalProbeResult result;
         if (pacUrl != null) {
             result = sendDnsAndHttpProbes(null, pacUrl, ValidationProbeEvent.PROBE_PAC);
             reportHttpProbeResult(NETWORK_VALIDATION_PROBE_HTTP, result);
@@ -2324,6 +2324,10 @@ public class NetworkMonitor extends StateMachine {
             result = sendMultiParallelHttpAndHttpsProbes(deps, proxyInfo, httpsUrls, httpUrls);
         } else {
             result = sendDnsAndHttpProbes(proxyInfo, httpUrls[0], ValidationProbeEvent.PROBE_HTTP);
+            if(result.isSuccessful() == false ){
+                Log.d(TAG, "Failed,Try another httpurl:" + String.format("%s",httpUrls[1]));
+                result = sendDnsAndHttpProbes(proxyInfo, httpUrls[1], ValidationProbeEvent.PROBE_HTTP);
+            }
             reportHttpProbeResult(NETWORK_VALIDATION_PROBE_HTTP, result);
         }
 
diff --git a/vendor/mediatek/proprietary/packages/overlay/vendor/NetworkStackResOverlay/res/values/config.xml b/vendor/mediatek/proprietary/packages/overlay/vendor/NetworkStackResOverlay/res/values/config.xml
old mode 100644
new mode 100755
index 0d9c88e..1d1ca0d
--- a/vendor/mediatek/proprietary/packages/overlay/vendor/NetworkStackResOverlay/res/values/config.xml
+++ b/vendor/mediatek/proprietary/packages/overlay/vendor/NetworkStackResOverlay/res/values/config.xml
@@ -12,6 +12,7 @@
     </string-array>
 
     <string-array name="config_captive_portal_http_urls" translatable="false">
+        <item>http://connect.rom.miui.com/generate_204</item>
         <item>http://connectivitycheck.gstatic.com/generate_204</item>
     </string-array>
 

五、参考文章:

https://www.jb51.net/article/161009.htm

Android8.1原生系统网络感叹号消除_落花时节又逢君-CSDN博客_android 网络感叹号

WIFI提示“已连接,但无法访问互联网”_hxm2011的博客-CSDN博客_wifi已连接但无法访问互联网

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值