资讯专栏INFORMATION COLUMN

Android系统开发之修改Captive Potal Service(消灭感叹号)

wenhai.he / 2461人阅读

摘要:谷歌在之后的版本加入了服务。但对于不能访问谷歌服务器的地区,问题就来了如果谷歌谷歌服务认为网络无法联网,就不会自动连接到该热点。并且让网络的标志上面显示感叹号标志。这个感叹号会使广大强迫症晚期患者无法接受。

本文原作者 长鸣鸟 ,未经同意,转载不带名的严重鄙视。
谷歌在Android5.0之后的版本加入了CaptivePotalLogin服务。本服务的功能是检查网络连接互联网情况,主要针对于Wi-Fi,不让Android设备自动连接那些不能联网的无线热点,白白耗电。
该服务的原理就是让接入无线热点后,测一下网站connectivitycheck.gstatic.com的联通情况。
但对于不能访问谷歌服务器的地区,问题就来了:

如果谷歌(谷歌服务)认为WiFi网络无法联网,就不会自动连接到该WiFi热点。而且如果设备有移动网络可用,就会自动切换到2G/3G/LTE。并且让WiFi网络的标志上面显示感叹号标志。

出现感叹号的同时,该服务会一直试探服务器,直到联通为止。该过程会消耗流量和电量,甚至导致部分设备无法休眠。

这个感叹号会使广大强迫症晚期患者无法接受。

对于Android Source开发的同学,最好的解决办法自然是修改源码:
方案1:更换测试地址
frameworks/base/packages/SettingsProvider/res/values/defaults.xml:

@@ -223,7 +223,7 @@
 
     0
+    www.androidbak.net

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java:

@@ -2623,9 +2623,12 @@ class DatabaseHelper extends SQLiteOpenHelper {
             loadBooleanSetting(stmt, Settings.Global.ASSISTED_GPS_ENABLED,
                     R.bool.assisted_gps_enabled);
 
           loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED,
                     R.integer.def_captive_portal_detection_enable);
 
+            loadStringSetting(stmt, Settings.Global.CAPTIVE_PORTAL_SERVER,
+                    R.string.def_captive_portal_server);
+

方案2:禁用服务
本文原作者 长鸣鸟 ,未经同意,转载不带名的严重鄙视。

--- a/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java
+++ b/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java
@@ -270,8 +270,11 @@ public class NetworkMonitor extends StateMachine {
 
         mLingerDelayMs = SystemProperties.getInt(LINGER_DELAY_PROPERTY, DEFAULT_LINGER_DELAY_MS);
 
-        mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1;
+        //mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(),
+               //Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1;
+        mIsCaptivePortalCheckEnabled = false;

对于普通用户,有一个简便的方法:
第一步:安装adb,不多赘述。
第二步:在终端输入adb shell settings put global captive_portal_server www.g.cn
或者输入adb shell settings put global captive_portal_detection_enabled 0
重启有效,恢复出厂设置要重来。
本文原作者 长鸣鸟 ,未经同意,转载不带名的严重鄙视。
That’s all.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13042.html

相关文章

  • Android系统开发修改Captive Potal Service消灭叹号

    摘要:谷歌在之后的版本加入了服务。但对于不能访问谷歌服务器的地区,问题就来了如果谷歌谷歌服务认为网络无法联网,就不会自动连接到该热点。并且让网络的标志上面显示感叹号标志。这个感叹号会使广大强迫症晚期患者无法接受。 本文原作者 长鸣鸟 ,未经同意,转载不带名的严重鄙视。谷歌在Android5.0之后的版本加入了CaptivePotalLogin服务。本服务的功能是检查网络连接互联网情况,主要针...

    Zhuxy 评论0 收藏0
  • fir.im Weekly - 热门 iOS 第三方库大盘点

    摘要:源码地址在此开源了在微博上分享开源了。中炸裂特效的实现分析说道前几天微博上被一个很优秀的开源组件刷屏了,效果非常酷炫,有点类似卸载时的动画,先来感受一下。 本期 fir.im Weekly 收集的热度资源,大部分关于Android、iOS 开发工具、源码和脑洞大开的 UI 动画,希望给你带来更多的工作创意与灵感。 盘点国内程序员不常用的热门iOS第三方库 @ios122 的这份整理综合...

    luoyibu 评论0 收藏0
  • fir.im Weekly - 热门 iOS 第三方库大盘点

    摘要:源码地址在此开源了在微博上分享开源了。中炸裂特效的实现分析说道前几天微博上被一个很优秀的开源组件刷屏了,效果非常酷炫,有点类似卸载时的动画,先来感受一下。 本期 fir.im Weekly 收集的热度资源,大部分关于Android、iOS 开发工具、源码和脑洞大开的 UI 动画,希望给你带来更多的工作创意与灵感。 盘点国内程序员不常用的热门iOS第三方库 @ios122 的这份整理综合...

    Lavender 评论0 收藏0
  • OneAPM 云监控部署与试用体验

    摘要:作为骨灰级粉丝,一直以来对第三方监控都是拒绝的。例如白屏时间首屏时间脚本错误网页加载就绪时间各种浏览器的访问情况,甚至能了解不同浏览器运营商地区用户的访问状况。脚本错误在所难免,错误进一步导致网站部分功能无法使用。 作为 Zabbix 骨灰级粉丝,一直以来对第三方监控(APM)都是拒绝的。一来觉得收费,二来担心数据被人所知,三来觉得 Zabbix 牛逼到无可取代。但是,随着 APM 市...

    Tecode 评论0 收藏0
  • Android-开发姿势

    摘要:微信这类怎么做谈谈八款开发者必备的小工具八款开发者必备的小工具笔记之图像压缩开发中的图像压缩是一个很重要的部分。 Android 攻城狮—全套必备神级工具(开发,插件,效率) 如果你有用的酸爽的软件,请下面留言。我会持续更新。。。 替你 总结的 Gradle 配置 关于 Gradle 配置的一些总结,欢迎交流! 常用的代码片段,不断更新 项目中平常会用到的代码片段,以及一些收集的好的代...

    jifei 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<