我的應用程序中的一個功能通過互聯網發送數據。嘗試發送數據之前,我檢查連接是否存在:創建沒有3G連接的android AVD
private boolean isConnected() {
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo.State val1 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
NetworkInfo.State val2 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
return NetworkInfo.State.CONNECTED.equals(val1) || NetworkInfo.State.CONNECTED.equals(val2);
}
這工作完全正常的仿真器和一對夫婦的實際設備的測試我的。然後我收到了客戶的錯誤報告,調查結果是NullPointerException
,在getState
線上,對於TYPE_MOBILE
。
顯然,在沒有3G(僅限WiFi的平板電腦)的設備上,connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
返回了null
。儘管我在Nexus 7仿真器上進行了測試,但沒有收到此錯誤。
因此,我感興趣的是創建一個明確沒有3G的AVD(即僅支持WiFi的設備的AVD),以便我可以調查/測試這些場景。我在模擬器選項中沒有找到任何東西,但也許我只是在錯誤的地方尋找。這甚至有可能嗎?
我試圖關閉3G數據 - 這模擬關閉手機中的3G數據 - 並且連接信息不爲空,而是其getState返回DISCONNECTED。顯然這不是我所追求的。 – 2013-03-07 15:45:00
我什至不能找到去除hw的地方。GSMMODEM。最新版本的ADV經理不會給我這些選項。我想,我可以尋找avd的xml,但禁用所有單元格數據對我來說不是一種選擇。我想我只會添加檢查空值。 – 2013-03-11 10:46:41
我還沒有更新過AVD管理器,但您不需要通過任何方式更改選項。按說明編輯。 – Geobits 2013-03-11 12:40:41