Android中如何除去网络感叹号

文和大家分享的是不同版本android开发中,除去网络感叹号的方法,希望通过本文对大家有所帮助。
貌似自从Android 5.0 Lollipop开始,Google就增加了一个Portal Server门户服务器的连通性测试,大意是为了在连接到需要验证的Public Wi-Fi时,能根据连通测试的情况自动弹出Wi-Fi登陆提示页面,但是默认的地址是 [国内不存在的] gstatic.com 的,鉴于国内的奇葩环境,不管Wi-Fi是不是好的,都会被认为网络是不通的显示一个感叹号提示(Android 7.0 Nougat改成了小叉叉)……
注意:本文提到的方法都无需root,但是需要adb工具并开启开发者选项。
Android 5.0 Lollipop & Android 6.0 Marshmallow的解决方法
在Android 5.0 Lollipop & Android 6.0 Marshmallow时,根据 小狐狸 的 分析 ,可以用以下两个方法解决
· 方法一:直接禁用Portal Server的连通性测试
在开启了开发者选项的情况下,连接电脑,安装最新版的adb工具,然后执行以下命令:
adbshell "settings put global captive_portal_detection_enabled 0"
然后飞行模式一下,就没有了,但是有个弊端,就是如果你连接公共Wifi需要验证的时候,会发现不会自动弹出验证网页,需要自己打开浏览器访问任意网页才行。
· 方法二:更改默认的Portal Server地址
网上有一些热心人士提供了在国内可正常连接的Portal Server,包括 小狐狸 、 v2ex、 g.cn 等,我个人比较喜欢g.cn的,同样在adb下输入以下命令可以达到修改Portal Server的目的:
adbshell "settings put global captive_portal_server g.cn"

adbshell "settings put global captive_portal_server captive.v2ex.co"
方法二我一直都在用,但是直到Android 7 Nougat这个办法就失效了……如果你用了方法一,应该不用往下看,以下都是基于方法二的调整。
Android 7.0 Nougat的解决方法
这个时候,之前的方法失效了,于是遍寻网上,后来有人发现是验证方法改成HTTPS了,而之前是HTTP的,于是热心人士的服务器纷纷失效了,因此 v2ex还升级了之前提供的服务 ,开出了一个子域名专门做Portal Server,并同时提供HTTP和HTTPS两种连接方式。同样可用的热心人士服务器有Google.cn …… 如果你之前用的就是v2ex的,那么在v2升级后,你就检测就会恢复了,不需要再修改设置。
在Android 7 Nougat仍然可以通过禁用检测的方式来解决这个问题,但我更喜欢无损解决,所以,把上面方法二的服务器换一下就行:
adbshell "settings put global captive_portal_server www.google.cn"
Android 7.1.1 Nougat的解决方法
到这个版本,不知道为什么HTTPS的服务器也歇菜了,真是命运多舛,我的Nexus 5X根本就不想unlock和root,所以继续找办法,直到有人发现这次不管怎么改,都会连接到 gstatic.com 这个米上面,于是开始有人通过改hosts的方法来解决,但是我不想root……
于是刚才又 找到一个方法 ,这次需要直接修改Portal Server的URL了……因为不会在末尾自动加 /generate_204 了……
请执行以下命令
adbshell "settings put global captive_portal_https_url https://www.google.cn/generate_204"

adbshell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204"
目前来看,我刚升级到7.1.1的Nexus 5x是解决了这个问题了,不知道下次版本升级又会发生什么……
P.S:个人极力推荐有各种科学上网需求的童鞋,完全可以买一个Google Project Fi的SIM卡来日常用,天然科学上网,自带米国手机号,无障碍平滑激活Google Now/Location等服务,等有空写写Fi的使用体会。

来源:Mr. 21

时间: 2025-01-03 08:34:57

Android中如何除去网络感叹号的相关文章

Android中的异步网络请求

本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关姿势.由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家:) 1. 同步网络请求 以HTTP的GET请求为例,我们来介绍一下Android中一个基本的同步请求框架的实现.直接贴代码: public class HttpUtils { public static byte[] get(String urlString) { HttpURLConnection urlConne

Android中判断当前网络是否可用

当前有可用网络,如下图: 当前没有可用网络,如下图: 实现步骤: 1.获取ConnectivityManager对象 Context context = activity.getApplicationContext(); // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理) ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECT

Android中android-async-http开源网络框架的简单使用

android-async-http开源网络框架是专门针对Android在Apache的基础上构建的异步且基于回调的http client.所有的请求全在UI线程之外发生,而callback发生在创建它的线程中,应用了Android的Handler发送消息机制. android-async-http的特点:(这段摘自网络) Make asynchronous HTTP requests, handle responses in anonymous callbacks 进行异步HTTP请求,处理响

Android中HttpURLConnection使用详解

认识Http协议 Android中发送http网络请求是很常见的,要有GET请求和POST请求.一个完整的http请求需要经历两个过程:客户端发送请求到服务器,然后服务器将结果返回给客户端,如下图所示: 客户端->服务器 客户端向服务器发送请求主要包含以下信息:请求的Url地址.请求头以及可选的请求体,打开百度首页,客户端向服务器发送的信息如下所示: 请求URL(Request URL) 上图中的Request URL就是请求的Url地址,即https://www.baidu.com,该Url没

Android开发之APN网络切换

本文介绍Android平台中关于APN网络切换的相关知识以及如何实现APN切换. 由于最近的项目中用到APN切换的功能,所以就借着这个机会介绍一下APN的相关知识及如何在Android实现切换过程.关于APN的基本知识我会在下面给大家介绍. 在这个示例中,我使用圆角ListView显示效果,关于Android实现ListView圆角效果,大家可以查看我以前的一篇博文:http://www.cnblogs.com/hanyonglu/archive/2012/03/18/2404820.html

Android中图片的三级缓存策略

一.简介 现在的Android应用程序中,不可避免的都会使用到图片,如果每次加载图片的时候都要从网络重新拉取,这样不但很耗费用户的流量,而且图片加载的也会很慢,用户体验很不好.所以一个应用的图片缓存策略是很重要的.通常情况下,Android应用程序中图片的缓存策略采用"内存-本地-网络"三级缓存策略,首先应用程序访问网络拉取图片,分别将加载的图片保存在本地SD卡中和内存中,当程序再一次需要加载图片的时候,先判断内存中是否有缓存,有则直接从内存中拉取,否则查看本地SD卡中是否有缓存,SD

Android中使用http协议访问网络

HTTP协议的工作原理:客户端向服务器端发送http请求,服务器端收到请求后返回一下数据给客户端,客户端接受消息并进行解析. 在Android中发送http请求的方式有两种,第一种是通过HttpURLConnection的方式,第二种是通过HttpClient的方式. 通过HttpURLConnection的方式发送http请求 通常分为以下5个步骤: 1.获取HttpURLConnection实例对象.先new一个URL实例,然后调用该对象的openConnection()方法. 2.设置ht

如何在Android中播放网络传输过来的AAC音频?

============问题描述============ 如何在Android中播放网络传输过来的AAC音频?每个包都有ADTS头的. ============解决方案1============ 如果是应用的话,直接设置MediaPlayer setDataSource设置为网络音频的uri,然后prepareAsync(), prepare完成后调用start不就可以了吗? framework层的话还是要用aacdecoder进行解码播放,要么用软件解码,要么用硬件解码.

Android中判断网络连接是否可用及监控网络状态

Android中判断网络连接是否可用及监控网络状态 作者: 字体:[增加 减小] 类型:转载 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限,接下来详细介绍Android中判断网络连接是否可用及监控网络状态,感兴趣的朋友可以参考下 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"