如何消除原生Android网络状态上的惊叹号
来源:互联网 发布:怎样使用农村淘宝 编辑:程序博客网 时间:2024/05/01 14:43
喜欢使用原生Android系统的朋友可能会发现自己的状态栏信号图标上经常有一个惊叹号标志。
这是怎么回事呢?原因是Android为了对网络状态进行检测,采用了一种叫做captive detection的方式进行网络状态检测。
其实说起来很简单,每当连接到一个网络,比如移动数据网络或者WIFI的时候,Android的NetworkMonitor模块会构造一个http的请求,发送到指定的服务器,然后利用收到的响应进行网络状态判断。
1) 根本就没有返回,这种情况代表当前没有Internet访问;参见图1左图。
2) 返回状态码204,这种情况代表具备完整的Internet访问(特定的服务器专门返回204的状态码);参见图1右图。
默认的Android系统访问的特定服务器地址是:
http://clients3.google.com/generate_204非常幸运,感谢伟大的墙,该地址我们在国内根本无法访问,因此总是没有返回值。这种情况下,Android总是认为当前没有Internet访问能力,因此会在信号图标上显示感叹号。
而其实这时候我们是可以访问网络的。为了消除这种误判,我们可以粗暴的将该功能关闭,通过如下的adb命令就可以做到:
[注意:这种方法不推荐,不建议执行这个命令]
$ adb shell settings put global captive_portal_detection_enabled 0
但是,这样的做法明显有问题:当碰到需要登录的网络也无法判断出来,从而无法提示用户进行web登录了。
因此,最好的做法是提供一个可以访问的网站来专门返回204状态码,然后将检测服务器定向到该地址。
这里,我为大家提供一个网络检测服务器地址:
http://www.androidbak.net/generate_204
利用如下的adb命令就可以修改该服务器地址了:
$ adb shell settings put global captive_portal_server www.androidbak.net
如果大家使用过后觉得不想用了,可以使用如下的命令恢复初始状态:
$ adb shell settings delete global captive_portal_server$ adb shell settings put global captive_portal_detection_enabled 1
0 0
- 如何消除原生Android网络状态上的惊叹号
- 如何消除原生Android原生网络连接显示x或者惊叹号
- Android 如何判断网络的连接状态
- 两个惊叹号的作用(!!)
- 如何消除UITabbar上的阴影线
- 在android上监听网络状态的变更
- 在android上监听网络状态的变更
- 在android上监听网络状态的变更
- 在android上监听网络状态的变更
- 在Android上监听网络状态的变更
- 在android上监听网络状态的变更
- Android 如何获取网络上的图片
- Android如何获取当前手机的网络状态
- android 如何消除锯齿
- 如何检查Android网络连接状态
- Android 如何实时监测当前网络状态
- 如何检查Android网络连接状态
- Android如何判断网络状态是否良好
- php 中更简洁的三元运算符 ?:
- 总结Objective-C特点
- 彻底了解RxJava(一)基础知识
- 用C语言在桌面上创建一副bmp图像
- 苹果手机掉了怎么办,可以定位找回么
- 如何消除原生Android网络状态上的惊叹号
- 有序单向链表转换为平衡搜索二叉树
- ImageView中的几个属性
- Laravel 5.0 发布, 海量新特性!!
- 堆:Binary Heap, Fibonacci Heaps资料+总结
- 致未来的自己
- 2014年MSTC趣味C语言比赛
- R语言爬虫之——RCurl
- 深入分析Service