如何在Android仿真器中模拟网络总损耗

如何在Android仿真器中模拟网络总损耗,android,android-emulator,Android,Android Emulator,我正在尝试编写一个应用程序,需要知道何时没有可用的IP网络连接。我正在使用android.net.conn.CONNECTIVITY_CHANGE broadcast事件和ConnectivityManager来响应状态的变化,以实现这一点,但在模拟器中测试设置时遇到问题 我尝试了飞行模式和按F8键禁用“蜂窝网络”,但即使这两种模式都启用,应用程序仍然“看到”底层网络 是否有人设法找到一种方法来模拟完全缺乏网络访问?可用-如果没有此断开连接可以在禁用WIFI时返回TRUE。有关更多信息,请参阅下

我正在尝试编写一个应用程序,需要知道何时没有可用的IP网络连接。我正在使用android.net.conn.CONNECTIVITY_CHANGE broadcast事件和ConnectivityManager来响应状态的变化,以实现这一点,但在模拟器中测试设置时遇到问题

我尝试了飞行模式和按F8键禁用“蜂窝网络”,但即使这两种模式都启用,应用程序仍然“看到”底层网络


是否有人设法找到一种方法来模拟完全缺乏网络访问?

可用
-如果没有此
断开连接
可以在禁用WIFI时返回
TRUE
。有关更多信息,请参阅下面的代码和此url

android.permission.ACCESS\u NETWORK\u STATE
权限请求添加到应用程序清单中:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


我体验到,按F8键后,状态栏中的图标显示没有连接,但如果您尝试浏览,它会工作。可能与这个打开的bug有关:

Eclipse中有DDMS透视图,您可以在其中使用连接速度和可用性(在Emulator控件选项卡中)。如果它对您不起作用,我可能会建议您打开操作系统的网络,甚至拔掉电缆:)

Oops,我想发布此响应(http://stackoverflow.com/questions/3400109/simulate-wireless-network-in-emulator/6078544#6078544)在这里

下面是我为在模拟器上模拟总网络连接丢失而提出的解决方案:

编写以下脚本并将其命名为“nonetwork.sh”

通过此命令将以下脚本上载到emulator:

adb push nonetwork.sh /data/local/nonetwork.sh
更改权限

adb shell chmod 700 /data/local/nonetwork.sh
运行它

adb shell /data/local/nonetwork.sh

当设备上的网络关闭时,您也将无法访问adb,但一旦重新建立连接,它将再次工作。希望这有帮助。

我更喜欢
svc
命令

svc wifi disable
svc wifi enable
netcfg mlan0 up/down
通过
netcfg
命令

svc wifi disable
svc wifi enable
netcfg mlan0 up/down

因为当您使用后者关闭wifi时,它会在一段时间后恢复,我还不知道原因。

嗨,我有一些与此非常相似的代码,问题是它会触发一些复杂的代码,我需要测试和调试。测试这些事件才是问题所在,这就是为什么我想模拟将激活代码的触发器。@hardlib:你能详细说明一下吗,我明白你的意思了?@hardlib:你能试试我发布的最新答案吗?我想我已经解决了我看到的问题所在。我有一个第三方库,它执行一些网络工作,即使在示例代码显示网络已关闭后,它仍能在模拟器中继续工作。有可能破坏第三方连接,所以当ConnectionManager说没有网络时,我会这样做。如果您的计算机是无线的,可以将Windows 8置于飞行模式,这是一种体面的“真实”测试方法,因为模拟器不知道发生了什么。很好的提示,tnx!只有一个小提示:此技巧的用户必须保留脚本位置。/mnt下的脚本具有“损坏的所有者”。