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

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android系统开发之修改Captive Potal Service(消灭感叹号)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

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

@@ -223,7 +223,7 @@
 <!-- Default for Settings.Global.CAPTIVE_PORTAL_detectION_ENABLED,
          1 == enabled, all other values will disable it -->
     <integer name="def_captive_portal_detection_enable">0</integer>
+    <string name="def_captive_portal_server">www.androidbak.net</string>

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.

脚本宝典总结

以上是脚本宝典为你收集整理的Android系统开发之修改Captive Potal Service(消灭感叹号)全部内容,希望文章能够帮你解决Android系统开发之修改Captive Potal Service(消灭感叹号)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。