刷Android5.0或CM12出现流量和WIFI感叹号去掉方法

昨天把心爱的moto X刷了一个CM12,至今为止已经能够完美使用,我用的是电信4G,移动和联通的用户应该也是可以正常使用的。一开始刷进的时候各项功能都很正常,界面也很美观,就是发现CM12的ROM包WIFI和流量旁边有感叹号,后来经过各种谷歌,终于解决,现在将去掉CM12感叹号的方法分享给广大强迫症朋友。

去掉Android5.0和CM12网络图标上的感叹号的方法

Android5.0和CM12网络图标为什么会出现感叹号

这是因为安卓5.0引入了一种新的网络评估机制来评估网络状况,当你有网络请求时会自动选择网络连接条件最好的一个网络进行连接。中间有段函数isCaptivePortal()是用来判断当前网络是否需要登录的,而这个函数会到谷歌的服务器上进行请求,所以无法发送数据,出现感叹号。

CM12网络状态出现感叹号

如何去掉Android5.0和CM12网络图标上的感叹号

  • 使用CM12的终端去掉网络图标上的感叹号
  1. 这里以CM12为例,首先,刷入CM12,打开开发者模式(CM12打开开发者模式的方法:猛击设置-关于-版本号十下),然后在开发者模式中打开ROOT授权(选择应用和ADB),然后在下面打开本地终端。
    CM12中打开终端的方法
  2. 回到桌面,打开抽屉,发现是不是多了一个“终端”,OK,打开它。
    使用CM12的终端去掉网络图标的感叹号
  3. 输入“su”,然后回车;
  4. 然后再输入“settings put global captive_portal_detection_enabled 0”,再回车;
  5. 然后输入“reboot”,继续回车;
  6. 机器自动重启后,看看你的网络图标。
  7. 这个方法建议在刷过Google服务包之后进行,当然,如果你需要Google服务的话。
  • 使用ADB shell命令去掉网络图标上的感叹号

这里我只操作了一次,也成功了,不过后来被我*#*#4636#*#*玩了几次搞得又没网了,基本原理与上述方法一致。

我是用的moto X专用的fastboot工具打“ADB”,然后打adb shell “settings put global captive_portal_detection_enabled 0″(注意引号,不要打最外面这个大引号),出现一段killing什么什么的,然后重启试试。

使用ADB shell命令去掉感叹号不需ROOT。

你也可以使用ADB shell命令替换掉Google服务器:在ADB下打adb shell “settings put global captive_portal_server xn--yet824cpd.xn--fiqs8s”。

  • 使用非主流方法去掉网络图标上的感叹号

这个方法是我从一加论坛和小米论坛看的,自己并未进行尝试,请大家自行尝试。

  1. 开机后连接WiFi;
  2. 开启设置,进入用户菜单,创建新用户;
  3. 系统提示需要网络连接,一直点下一步,让手机连接网络;
  4. 当进行到正在联网时,强制关机;
  5. 重新开机后切换下网络,会发现感叹号很快消失了;
  6. 删除刚刚新添加的用户。
  7. OK。

之所以说非主流,因为看起来这个方法真的很无厘头,没代码,一点都不专业啊,不过据说还真的有效。

使用NoExclamation修改器去掉网络图标上的感叹号

感谢网友小狐狸,这里我将NoExclamation修改器的APK文件存放在我的微盘里,大家下载的时候可以顺手关注一下菊部哥。

需要注意的是NoExclamation修改器需要获取ROOT权限。

 

在安卓7.1.2里如何消除x号(在老一点点版本是感叹号)呢?

20170405更新:在安卓7.1.2里如何消除x号(在老一点点版本是感叹号)呢?
1.首先开启usb调试,然后用数据线连接电脑和手机。
2.然后解决好您的adb驱动问题,具体教程见:http://www.pixcn.cn/thread-1084-1-1.html
3.在电脑开始菜单-运行 输入cmd,打开命令提示符
依次输入下面语句
(以下办法支持安卓7.1.2/7.1.1)
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
 
然后开启飞行模式,然后关闭飞行模式解决!亲自测试有效!
 
 
下面语句对安卓7.1/7.0有效
adb shell settings delete global captive_portal_server  
adb shell settings put global captive_portal_detection_enabled 0
 
20150223更新:
谷歌原生安卓系统当连接到移动数据网络或者WIFI网络的时候,其NetworkMonitor模块会向特定的服务器发起一个http的请求并利用收到的响应进行网络状态判断。由于谷歌的服务器被天朝屏蔽,所以导致没有返回值,这个时候谷歌安卓系统就会在信号或者wifi上打一个感叹号。
 
以下办法对安卓6.x/5.x有效果,对安卓7.0无效
解决的办法比较简单,修改接收请求的服务器地址:
首先搞定您pc的adb环境,然后连接您的手机和电脑,在命令提示符用下面命令来修改将服务器地址修改成http://www.g.cn
 
adb shell settings put global captive_portal_server www.g.cn
 
然后开启飞行模式,然后关闭飞行模式解决!
 
如果您想恢复的话,使用下面的语句:
 
adb shell settings delete global captive_portal_server  
adb shell settings put global captive_portal_detection_enabled 1