如何在Android模拟器中禁用互联网连接?

70

我正在尝试使用以下方法检查Android的Internet连接。 我有一个Wi-Fi连接。

private boolean checkInternetConnection() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    // Test for connection
    if (cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isAvailable()
            && cm.getActiveNetworkInfo().isConnected()) {
        return true;
    }
    else {
        // No conection
        return false;
    }
}

我断开了电脑与互联网的连接,然后尝试运行上述方法。但结果总是返回 true!为什么?


2
尝试在设备上而不是模拟器上运行此事物,因为在模拟器上它总是会返回不确定的结果...!! - mayank_droid
但是我必须在模拟器上显示结果。有没有办法可以在模拟器上显示结果? - Rebooting
1
在模拟器中使用Pixel_3a_API_30_x86和Android 11似乎非常困难。当关闭Wifi并开启飞行模式时,Wifi会再次打开,而飞行模式也没有任何影响。最终我不得不改变URL或者禁用电脑的网络连接。 - Andreas Bergström
12个回答

0

telnet localhost 5554(或 Android 模拟器号码)

已启用互联网:

gsm data home

网络已禁用:

gsm data unregistered

你可以使用我的库,它可以在http://www.cristianmarquez.com.ar上找到。


仿真器对将GSM状态从“本地网络”移动到“无可用网络”的命令做出反应,但仿真器的互联网连接保持不变。 - Ivan Arrizabalaga
这只会禁用移动数据,而不会禁用WiFi。 - Adam Burley

0
我的应用程序是使用React Native构建的,对我有效的方法是在调试模式下运行设备,并在Chrome开发工具的限制下拉菜单中禁用网络连接。
注意:此流程会禁用直接在应用程序代码中进行的任何XHR调用。如果通过嵌入式门户/视图进行的请求仍然有效,前提是生成这些请求的代码位于应用程序的源目录/代码之外。
我使用React Native Debugger独立应用程序,并按照以下步骤操作:
  1. 选择运行react-native start的终端,并通过按下字母d打开开发者菜单

Terminal window displaying a 'opening developer menu' message

在模拟器上,从开发者菜单中选择“调试”。

Emulator screenshot displaying the developer menu

  1. 打开React Native Debugger独立应用程序

  2. 在模拟器上,关闭并重新启动应用程序以连接到React Native Debugger。如果使用非默认的本地开发端口/连接值,请在React Native Debugger应用程序中更新设置。

  3. 通过右键单击React或Redux devtools窗口,在React Native Debugger应用程序上启用网络检查 上下文菜单显示React Native Debugger应用程序的其他设置

  4. 在React Native Debugger应用程序的chrome devtools窗口中导航到网络选项卡,并从限制菜单中禁用网络连接

chrome devtools network tab showing the default connection setting values chrome devtools network tab showing a disabled connection setting and a list of failed networks calls


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接