android 5.1 WIFI表徵圖上的驚嘆號及其解決辦法

來源:互聯網
上載者:User

標籤:

轉自: http://blog.csdn.net/w6980112/article/details/45843129

 

  第一次調試android5.1的 WIFI更改小功能

Wifi 源碼的相關路徑目錄 
packages/apps/Settings/src/com/Android/settings/wifi/ 
frameworks/base/wifi/java/android/net/wifi/ 
frameworks/base/services/core/java/com/android/server/connectivity 
frameworks/opt/net/wifi/service/java/com/android/server/wifi/ 
frameworks/base/core/

定位一方面根據螢幕的顯示資訊,另一方面看logcat捕捉的資訊,從中會找到有用的。Logcat會告訴你一些蛛絲馬跡。還有就是相關代碼分布目錄。會用百度Google搜尋資訊,android5.1 wifi、 
wifi_no_internet、No Internet Access Detected, won\’t automatically reconnect……………

1、Framework層加列印資訊首先聲明標頭檔import android.util.Log;以及TAG是否有。 
在加列印資訊時,注意上下位置,例如不能在return XX 下面,以及注意變數的名稱會變化,對象會變。numNoInternetAccessRepor或者XXX.umNoInternetAccessReports 
只能重編嗎? 
2、packages/apps/Settings/res/ 下是螢幕顯示的字串資訊資源, 
No Internet Access Detected, won\’t automatically reconnect. 可以在 
packages/apps/Settings/src 下搜尋Wifi_no_internet 字串。在哪裡列印的出 summary.append(context.getString(R.string.wifi_no_internet)); 
else if (mConfig != null && mConfig.hasNoInternetAccess()) 
再跟蹤mConfig.hasNoInternetAccess() 函數, 
public boolean hasNoInternetAccess() { 
Return numNoInternetAccessReports > 0 && !validatedInternetAccess; 

再跟蹤numNoInternetAccessReports,在這點,分了多個方向,需要分析文法,最有可能走那一塊。 
執行命令 grep numNoInternetAccessReports -rn ./frameworks/ 
目標在路徑如下所示:frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java +7648 
需要研究這個函數public boolean processMessage(Message message) {} 
尋找這個函數 networkStatus()的調用之處。 
在frameworks/base/core/java/android/net/NetworkAgent.java +194 case CMD_REPORT_NETWORK_STATUS: { 
if (VDBG) { 
log(“CMD_REPORT_NETWORK_STATUS(” + 
(msg.arg1 == VALID_NETWORK ? “VALID)” : “INVALID)”)); 

networkStatus(msg.arg1); 
接著跟蹤MD_REPORT_NETWORK_STATUS 在 
frameworks/base/services/core/java/com/android/server/ConnectivityService.java +1988 
接著跟蹤 case NetworkMonitor.EVENT_NETWORK_TESTED在 
frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +360 
尋找這個類private class OfflineState extends State 
private final State mOfflineState = new OfflineState()

再尋找mOfflineState在 
frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +487 
研究transitionTo(mOfflineState) 這個函數 
根本原因是由於isCaptivePortal()這個函數,定義之處路徑在 
frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +635 
查閱資料是去嘗試訪問android的一個網址,根據http返回來的值來判斷網路是否串連通,其中返回為204時為正常,但由於國內屏蔽了這個網址,故在中國這個功能不適用,所以wifi訊號有歎號這個標誌。

解決辦法是if (!mIsCaptivePortalCheckEnabled) return 204 讓這句成立,跟蹤代碼 調用之處在 
mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1; 
跟蹤Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED 
路徑在 
android-5.1-m200-mr1/frameworks/base/core/java/android/provider/Settings.java +6175 
根據提示說明把上面的宏改成0即可關掉這個功能。我們遵循不改動android源碼的原則,不直接改動, 
在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中添加這樣一句話 
1

在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +2648 
添加loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, R.integer.def_captive_portal_detection_enabled); 
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 這個檔案是用來產生setting.db的。

frameworks/base/packages/SettingsProvider/res/values/defaults.xml 
一般把setting.db中各個表的出廠預設初始值放在這個檔案中,在DatabaseHelper.java 中讀取。

接著在自己廠商的裝置設定檔中添加device/ingenic/dorado/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

在這裡面可以重新給宏初始化為0這個值,在編譯時間先編譯android源碼,之後再編譯到這邊,這樣可以把之前的給覆蓋掉,以後在看代碼時能清楚地之道android預設配置是開啟的為1。 
0

  

android 5.1 WIFI表徵圖上的驚嘆號及其解決辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.