我正試圖編寫一個應用程序,需要知道何時不存在IP網絡連接。我正在使用android.net.conn.CONNECTIVITY_CHANGE廣播事件與ConnectivityManager一起對狀態變化做出反應,以達到此目的,但我在模擬器中測試我的設置時遇到問題。如何在Android模擬器中模擬總體網絡丟失
我嘗試了兩種飛行模式並按F8鍵來禁用「蜂窩網絡」,但即使這兩種模式都使應用仍「看到」底層網絡。
有沒有人設法找到一種方法來模擬完全缺乏網絡訪問?
我正試圖編寫一個應用程序,需要知道何時不存在IP網絡連接。我正在使用android.net.conn.CONNECTIVITY_CHANGE廣播事件與ConnectivityManager一起對狀態變化做出反應,以達到此目的,但我在模擬器中測試我的設置時遇到問題。如何在Android模擬器中模擬總體網絡丟失
我嘗試了兩種飛行模式並按F8鍵來禁用「蜂窩網絡」,但即使這兩種模式都使應用仍「看到」底層網絡。
有沒有人設法找到一種方法來模擬完全缺乏網絡訪問?
isAvailable
- 沒有這個isConnected
可以返回TRUE
當WIFI被禁用。請參閱下面的代碼,這詳情網址 http://developer.android.com/guide/developing/tools/emulator.html
ConnectivityManager conMgr = ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if (
connMgr.getActiveNetworkInfo() != null &&
conMgr.getActiveNetworkInfo().isAvailable() &&
conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) {
//notify user you are online
} else if (
conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) { //notify user you are not online
Toast.makeText(getBaseContext(),"Please
Check Your Internet Connection and Try Again",Toast.LENGTH_SHORT).show();
}
添加android.permission.ACCESS_NETWORK_STATE
許可請求您的應用程序清單:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
嗨,我有一些非常相似的代碼,這個問題是,它然後觸發一些我需要測試和調試的複雜代碼。測試這些事件是問題所在,這就是爲什麼我要模擬將激活代碼的觸發器。 – hardillb 2010-11-11 13:51:15
@hardlib:你能詳細說明一下嗎,我收到你的信息清楚了嗎? – 2010-11-11 13:58:24
Eclipse中有DDMS透視圖,您可以在其中操作連接速度和可用性(在「模擬器控制」選項卡中)。如果它不適合你,我可能會建議打開你的操作系統的網絡甚至插上電纜:)
是的,它工作,但你失去了你的adb連接:-( – arnouf 2012-12-12 09:21:31
哎呀,我打算髮布這個響應(http://stackoverflow.com/questions/ 3400109/simulate-wireless-network-in-emulator/6078544#6078544)這裏。
這裏是我想出了在模擬器上模擬整個網絡連接丟失解決方案:
寫下面的腳本並將它命名爲「nonetwork.sh」
netcfg eth0 down
sleep 10
netcfg eth0 up
netcfg eth0 dhcp
上傳下面的腳本從這個命令模擬器:
adb push nonetwork.sh /data/local/nonetwork.sh
變化的權限
adb shell chmod 700 /data/local/nonetwork.sh
運行它
adb shell /data/local/nonetwork.sh
當網絡出現故障,你將無法訪問ADB很好,但一旦連接重新建立它會再次運行在設備上。希望這可以幫助。
偉大的提示,tnx!只有小提示:此提示的用戶必須保留腳本位置。/ mnt下的腳本有「被寵壞的所有者」。 – 2013-12-04 14:42:16
我喜歡svc
命令
svc wifi disable
svc wifi enable
在netcfg
命令
netcfg mlan0 up/down
因爲當你使用後者拒絕無線網絡,它將我還沒有發現一段時間後恢復爲什麼。
@Hardlib:你可以嘗試我發佈的新的更新答案嗎? – 2010-11-11 14:36:59
我想我已經弄清楚我看到的問題在這裏。我有一個第三方庫,它可以完成一些網絡工作,即使在示例代碼顯示網絡出現故障後,仍然可以繼續在仿真器中工作。可以拆除第三方連接,因此當ConnectivityManager說沒有網絡時我會這樣做。 – hardillb 2010-11-11 15:13:00