喜欢使用原生Android系统的朋友可能会发现自己的状态栏信号图标上经常有一个惊叹号标志。

这是怎么回事呢?原因是Android为了对网络状态进行检测,采用了一种叫做captive detection的方式进行网络状态检测。

其实说起来很简单,每当连接到一个网络,比如移动数据网络或者WIFI的时候,Android的NetworkMonitor模块会构造一个http的请求,发送到指定的服务器,然后利用收到的响应进行网络状态判断。

网络状态有如下几种状态:

1) 根本就没有返回,这种情况代表当前没有Internet访问;参见图1左图。

2) 返回状态码204,这种情况代表具备完整的Internet访问(特定的服务器专门返回204的状态码);参见图1右图。

3) 除204以外的其他大于200而小于400的状态码,这种状态码一般代表需要进行Web登录的网络连接,比如机场、商场提供的需要短信登陆的网络。这种情况下Android会构造一个可能需要登录的状态栏通知以通知用户可能需要进行登陆。参见图2。

默认的Android系统访问的特定服务器地址是:

http://clients3.google.com/generate_204

非常幸运,感谢伟大的墙,该地址我们在国内根本无法访问,因此总是没有返回值。这种情况下,Android总是认为当前没有Internet访问能力,因此会在信号图标上显示感叹号。

而其实这时候我们是可以访问网络的。为了消除这种误判,我们可以粗暴的将该功能关闭,通过如下的adb命令就可以做到:

[注意:这种方法不推荐,不建议执行这个命令]

$ adb shell settings put global captive_portal_detection_eanbled 0

但是,这样的做法明显有问题:当碰到需要登录的网络也无法判断出来,从而无法提示用户进行web登录了。

因此,最好的做法是提供一个可以访问的网站来专门返回204状态码,然后将检测服务器定向到该地址。

这里,我为大家提供一个我知道的网络检测服务器地址:http://204.gentool.top

利用如下的adb命令就可以修改该服务器地址了:

$ adb shell settings put global captive_portal_server 204.gentool.top

如果大家使用过后觉得不想用了,可以使用如下的命令恢复初始状态:

$ adb shell settings delete global captive_portal_server

更新补充一点:

注意:从Android N(7.0)开始,默认使用https,并且设置项发生改变(从CAPTIVE_PORTAL_SERVER = "captive_portal_server"=>CAPTIVE_PORTAL_HTTP_URL = "captive_portal_http_url")。

$ adb shell settings put global captive_portal_detection_enabled 1

$ adb shell settings put global captive_portal_use_https 1

$ adb shell settings put global captive_portal_https_url https://204.gentool.top

如果觉得麻烦,可以单条命令:

$ adb shell settings put global captive_portal_detection_enabled 1 && adb shell settings put global captive_portal_use_https 1 && adb shell settings put global captive_portal_https_url https://204.gentool.top

如何消除原生Android,如何消除原生Android网络状态上的惊叹号相关推荐

  1. android 使用广播监听网络状态

     网络状态发生变化的时候,系统会发出 android.net.conn.CONNECTIVITY_CHANGE . 下面是实现的 demo : package mark.zhang;import ...

  2. 【Android 电量优化】电量优化 ( 网络状态获取 | 主动获取 WIFI 状态 | 被动获取 WIFI 状态 )

    文章目录 一.获取 WIFI 状态 二.主动获取 WIFI 状态 三.被动获取 WIFI 状态 参考 Google 官方文档 : 优化电池续航时间 一.获取 WIFI 状态 在应用中执行某些操作 , ...

  3. Android实时监听网络状态

    Android开发实时监听网络状态变化一般有两种方法: 1. 新建一个基类BasicActivity.class,在基类中注册网络监听广播NetworkChangeReceiver.class,所有页 ...

  4. android 广播解绑,Android四大组件之BroadCast

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Android四大组件之BroadCast 一.广播概述 Android应用可以从Android系统和其他Android ...

  5. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  6. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  7. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  8. 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )

    文章目录 一. 图片质量压缩 二. 图片尺寸压缩 三. Android 10 文件访问 四. 完整源码示例 上一篇博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供 ...

  9. Android开发之原生定位的方法(GPS,网络定位)

    话不多说,直接代码: 注意:此经纬度和第三方地图的经纬度不是一个经纬度 例如此经纬度longitude:116.426676  latitude:39.932821精确位置40.0海拔0.0 在原生G ...

最新文章

  1. 批评“古风”歌词“狗屁不通”就是不尊重?我们又都成了“垃圾听众”
  2. PHP非对称加密:RSA (RSA/ECB/PKCS1Padding)+base64_encode/bin2hex加密
  3. 实时多线程系统的日志实现
  4. API函数的调用(包含一个大小写的问题)
  5. 【Python学习】 - Matplotlib二维绘图 - plt.matshow()和plt.imshow()区别对比
  6. 计算机组装与维护推荐教材,计算机组装与维护(全国高等专科教育计算机类规划教材)...
  7. 游戏服务器宕机应对措施
  8. informantion_schema库介绍
  9. GOF设计模式--简单工厂模式
  10. 前端Tippy.js组件 配置 Button点击事件
  11. 美团构建实时数仓的痛点是什么?如何解决?
  12. 听听股市的几个出了名的魔咒
  13. 基于时延估计的动力型下肢假肢分段控制策略研究
  14. Android app跳转QQ加人聊天或者加群
  15. 【转】qlv文件如何转换成mp4 怎样把下载好的qlv格式视频转换成MP4格式
  16. 在西安电子科技大学读研是一种什么样的体验
  17. Egg.js 异常处理、中间件、jwt,实现接口权限控制
  18. 深度学习秋招面试题集锦(一)
  19. 可能是史上最适合入门SQL语句的教程——自学SQL网学习笔记
  20. 记录yarn安装全局包,无法使用的问题:‘yo‘ 不是内部或外部命令,也不是可运行的程序或批处理文件

热门文章

  1. 《团》里男人是否可嫁的汉?
  2. linux :安装中文输入法
  3. 高德地图红绿灯读秒是怎么实现的?(一)
  4. python爬虫 京东关键词搜索商品及具体参数和评论
  5. F5负载均衡配置一例 (型号:BIG-LTM-1600-4G-R)
  6. 喵 ~ 小程序搭建记录
  7. 对傅里叶函数以及级数的理解
  8. Android 仿QQ登录动态背景
  9. 离谱的bug564v*/92ray
  10. 阿狸表情图采集代码示例