转自:https://xn--yet824cpd.xn--fiqs8s/45.html

升级了安卓5.0的同学们一定对网络图标上面的那个感叹号感到十分郁闷。安卓5.0引入了一种新的网络评估机制来评估网络状况,当你有网络请求时会自动选择网络连接条件最好的一个网络进行连接。该机制的代码实现如下:

简要来说就是,如果该网络是VPN,那么直接使用这个网络进行连接,否则调用isCaptivePortal() 函数进行网络状况的判定,再根据判定结果决定是否选用此网络。 而罪魁祸首就是这个 isCaptivePortal() 函数,它会访问clients3.google.com/generate_204 并根据返回结果来判断网络联通状况。正是这个google的网址被墙导致安卓没有办法评估网络,这样就导致了那个蛋碎的感叹号一直存在,以及wifi用着用着突然自动连回数据连接了。

本来我想直接把 isCaptivePortal() 函数给屏蔽掉,让他一直返回成功,但是看了下google的代码,发现这个函数是非常有用处的,为什么呢?这个函数有个非常重要的作用,那就是判断当前网络是否需要登录。

想必大家都连接过那些需要验证才能使用的wifi热点吧,当你们连接这些热点的时候,android会自动弹出提示询问你是否需要登录。而这个功能就是依靠了isCaptivePortal() 这个函数才得以实现,具体原理如下:

安卓先访问 clients3.google.com/generate_204 这个网址,而这个网址如字面所说,会产生一个 http 204 返回值。204返回值的意思就是空内容。如果当前wifi是需要登录才可以连接,那么当试图访问google的服务器的时候,wifi的验证机制一定会自动跳转到一个登录页面,这个时候http请求的返回值就必然不是204了。就是通过这一机制,便可以区分当前wifi是否需要验证,不得不佩服想出这个办法的人来。

然而这就导致了如果简单的屏蔽掉这个函数的功能,那么就没有办法自动提示登录了,但是如果不屏蔽掉那么这个网址被墙掉了,因此会有一个难看的感叹号。想来想去我想到了一个曲线救国的办法,那就是我们把这个网址改成国内的网址不就可以了?我们自己搭一个服务器,来产生这个204返回值给它,问题不就迎刃而解了吗?


那么下面就给出解决方法(无需root):

1.完全屏蔽网络检查功能,最简单快速,但是就没有办法提示wifi登录:

adb shell "settings put global captive_portal_detection_enabled 0"

2.用国内的服务器替换掉google的服务器:

adb shell "settings put global captive_portal_server xn--yet824cpd.xn--fiqs8s"

这个服务器是我自己建的,也就是本站:http://小狐狸.中国/ 我在服务器上写了个简单的204页面,网址是 http://xn--yet824cpd.xn--fiqs8s/generate_204 只要用这个网址替换掉google的网址,就可以正常访问并检测网络状态了。不过由于本人的服务器速度并不快,所以感叹号还是会显示一小会儿的,不过应该很快就会消失。

如果你对本站提供的服务速度不满意,可以在文末找到网友提供的其它服务地址。

是不是看着很舒服呢?烦人的感叹号没有了~

经过靠谱的确认,改修改方式具有持久性,重启依旧有效,除非刷机或者清除数据。


如何建立自己的服务器

1. 对于apache服务器,如果你的服务器安装了rewrite模块,那么只需要在网站的.htaccess中加入以下代码:

<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_URI} /generate_204$RewriteRule $ / [R=204]
</IfModule>

2. 对于nginx,直接加入以下设置即可:

location /generate_204 { return 204; }

3. 如果以上方法都无效,那么就要利用代码中的一个小trick来完成,直接在网站的根目录下建立一个叫做“generate_204”的空文件即可,因为安卓的源码中写了如果返回的内容为空那么也会当成204(毕竟一个空的页面怎么想都不可能是登录页面嘛!)。


一键设置工具(需要root)

锵锵锵!由于有些人不太熟悉adb之类的操作,因此就做了一个小工具方便大家直接在手机上设置! 

  • 下载地址

    下载 “NoExclamation Portal Server 修改器”NoExclamation.apk – 已下载13281次 – 41 kB


一些其它服务网址

我会尽我所能提供长期有效的服务,但是由于本站服务器不是很快,而且网络状况有时候会不稳定,因此无法保证100%可靠的服务。不过有一些热心网友提供了其它服务网址,速度和稳定性或许会比本站要好。故在此特别列出供大家选用。如果给提供者带来不便之处请回复告知,我会及时删除。

by lkebinliukebin.sinaapp.com 架设于国内SAE服务器,国内访问速度快,据lkebin称是永久有效

by 王晨浩www.iwch.me 热心网友的个人站点

目前已无效的地址:

by lentinwww.265.com 依旧是google的服务,而且完全没有被和谐,并且访问速度很快,推荐

by EraserKingg.cn 谷歌的短网址,不知道为什么没有被国内和谐,速度和稳定性自然是一流,但是不确定是否会在将来被和谐

请问能不能放出代码便于其他人也方便搭建204页面~
也谢谢作者找出来感叹号的原因~

回复

  • noisyfox 说道:
    2014年12月16日 下午5:46

    直接新建一个php文件,输入:

    <?php header("HTTP/1.1 204 No Content"); ?>

    即可,注意一点就是这个页面的url结尾必须是generate_204,因为这是直接用代码写死在系统里面的,只有前面的域名可以修改

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

  1. android 5.1感叹号,android 5.1 WIFI图标上的感叹号及其解决办法

    第一次调试android5.1的 WIFI更改小功能 Wifi 源码的相关路径目录 packages/apps/Settings/src/com/Android/settings/wifi/ fram ...

  2. android 7.0 按钮崩溃,Android 7.0调用相机崩溃详解及解决办法

    Android 7.0调用相机崩溃解决办法 错误提示: android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_ ...

  3. android最新相机打不开,Android 7.0调用相机崩溃详解及解决办法

    Android 7.0调用相机崩溃解决办法 错误提示: android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_ ...

  4. 计算机网络连接黄感叹号,电脑连接路由器网络连接显示黄色感叹号的解决办法...

    在日常使用WIN7系统的电脑连接路由器上网时,每当电脑右下有网络连接显示黄色感叹号我们就上不了网.导致WIN7系统的电脑出现右下角黄色感叹号的原因有很多大致可分为三种: 一.电脑TCP/IP协议故障 ...

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

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

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

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

  7. PopWindow Android 7.0位置显示不准确以及Android 8.0全面屏显示导航键留白解决办法

    popWindow 在Android7.0上的显示位置不管怎么设置都在屏幕的顶部,这是7.0的bug,已在7.1修复,但是7.0还是需要我们自己解决的,以及在小米mix2全面屏导航键留白,显示不全. ...

  8. 计算机网络连接黄感叹号,电脑网络图标上出现黄色感叹号不能上网解决方法

    摘要 腾兴网为您分享:电脑网络图标上出现黄色感叹号不能上网解决方法,中邮网院,学堂在线,携程抢票,携程等软件知识,以及电视家,oo浏览器,优优好店,赛酷ocr,微课掌上通,维语学习,云南山歌,春秋航空 ...

  9. 安装过千月(BlueSoleil)蓝牙软件后,网络图标上就一直显示红叉,但却能上网

    问题描述 安装过千月(BlueSoleil)蓝牙软件后,网络图标上就一直显示红叉,但却能上网,卸载千月后还是一直恢复不了. 解决方案: http://www.1000moons.com/downloa ...

最新文章

  1. Ansible03-管理变量、加密、事实
  2. Python抓取新浪新闻数据(三)
  3. python中词云图怎样变成特殊图案_如何利用python画出一个多变的词云图?(1)...
  4. 如何克服孤独和焦虑?How to overcome loneliness and anxiety?
  5. Eclipse配置开发Go的插件——Goclipse
  6. “穿透”与“征兆”:长篇小说《环形女人》(一)
  7. 进厂打工的大学生:每天站12个小时,4年存50万
  8. 一种通用的动作解决方案
  9. ZooKeeper 基本操作
  10. 2020 年开源项目
  11. violin 结构介绍
  12. 2022年由电子科技到整体科技
  13. TkMybatis 是什么?
  14. html文件恢复工具,小飞文件恢复工具
  15. 利用按键精灵实现QQ群发和微信群发
  16. 研究生导师的“难言之隐”
  17. dell的笔记本电脑如果开机总是黑屏 需要开几次才能点亮屏幕
  18. 添加布林带择时策略有多便捷!股票量化分析工具QTYX-V2.4.7
  19. 数码相机和单反相机有什么区别?(已解决)
  20. 影响大学生就业的几个关键问题

热门文章

  1. rust发射台主楼_船的种类
  2. ASUS VivoTab RT TF600T忘记系统登录密码,怎么办?
  3. 生活随记 - 我和老柳的记录
  4. 基于51单片机的音乐盒设计
  5. 计算机教授晚年凄凉,晚年过得凄凉被抛弃的老人,往往有2个共性,纯属自食恶果...
  6. 夜幕,又一次降临。窗外,风呼呼的刮着
  7. python退出全屏_JS 实现全屏功能和退出全屏功能
  8. 阿里财报:阿里云首次盈利,最大的压力是监管
  9. Bilibili 视频分区的json信息
  10. Stirling公式的应用