如何在Android模拟器中模拟总体网络丢失
我正试图编写一个应用程序,需要知道何时不存在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://*.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