这是我最接近的,但不起作用:
WifiManager wifiManager = (WifiManager) mActivityRule.getActivity().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
即使在 @Before 代码块中调用它也没有任何作用,而且我还在 AndroidManifest.xml 文件中设置了必要的权限来更改 wifi 设置。
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("svc wifi disable")
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("svc data disable")
我花了一段时间才找到它,所有这些答案和文章都建议过时的解决方案(wifiManager.setWifiEnabled 在 API 29 中已弃用)
WifiManager
服务,这有一点风险,因为它可能为空,或者您可以注入处理逻辑的东西。为了简化 Java/Kotlin 和所选 DI 库之间的差异,此解决方案是伪代码:
public class AppHelper {
public boolean isNetworkConnected(Context context) {
// Do your check
return isConnected;
}
}
public class SomeActivity extends Activity {
@Inject
AppHelper appHelper;
private void doNetworkStuff() {
boolean connected = appHelper.isNetworkConnected(this);
// implement your logic
}
}
从那里,您可以模拟或操作
AppHelper
的实例来实现您想要的结果。编辑:郑重声明,我不容忍在
Activity
中进行网络操作。这只是为了简单地传达这个想法。