繁体   English   中英

切断模拟器的互联网,同时保持 wifi 和移动数据打开

[英]Cut off emulator's internet while keeping wifi and mobile data on

我想在保持 wifi 和移动数据启用的同时切断模拟器的互联网,这样我就可以运行一些涵盖这种情况的自动化测试,而无需手动关闭互联网。

在 PC 上运行模拟器时,它通过主机 PC 访问互联网,我感兴趣的是是否有一个adb命令可以让我禁用(并重新启用中间测试,可能多次)互联网访问模拟器在保持 wifi 和移动数据启用的同时从主机 PC 获取?

我一直在使用svc wifi/data enable/disable分别启用和禁用 wifi 和移动数据。

这可能与我可以在测试中真正启用和禁用网络访问吗? 但考虑到它已经快 10 年了,在此期间可能发生了一些变化。

由于 Internet 连接中断完全是外部事件,因此您可以模拟它的最准确方法是使用代理。

首先,在您的网络中配置代理。 如果你想对它有更多的控制,你甚至可以用几行 python 编写一个。

然后启动模拟器,提供命令行选项-http-proxy或定义代理的环境变量http_proxy 此选项强制模拟器对所有传出 TCP 连接使用指定的 HTTP/HTTPS 代理。 当前不支持 UDP 重定向。

例如

emulator -http-proxy http://192.168.200.1:9999

然后,您可以通过代理控制模拟器访问互联网(HTTP/HTTPS)。

迭戈的回答把我推向了正确的方向。

使用: add shell settings put global http_proxy <ip>:<port>add shell settings put global http_proxy :0以设置和重置模拟器的全局代理,同时在代码中使用相同的代理(如果已设置,请检查我'我使用System.getProperty("http.proxyHost")System.getProperty("http.proxyPort") ),因为它不是自动使用的,所以我能够实现我想要的。

谢谢迭戈。

编辑:事实上,诸如HttpURLConnection之类的 API 确实会自动使用代理(如果设置了,那么我这边不需要检查和手动设置)。 好吧HttpURLConnection有它自己的问题,例如并不总是遵守超时,所以回到使用其他 API 并手动检查代理以及是否设置使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM