如何在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个回答

85

从Eclipse中操作

要禁用互联网连接,请进入Eclipse并执行以下步骤:

menu Window -> Show view -> Other -> Android -> Devices

现在选择正在运行的模拟器,然后再次转到:

menu Window -> Show View -> Other -> Android -> Emulator Control

现在,在这个... 设置数据为注销,从主页中移除。

从设备和模拟器中

在设备或模拟器中,转到:

Setting -> Wireless & networks -> Airplane Mode -> OK

@user370305 当然可以。那是来自模拟器和设备的信息。好的,让我在答案中添加这一点。 - MKJParekh
5
好的...我尝试了所有可能的选项。 代码中的 isAvailable 返回 false。 然而,当我的服务尝试连接远程站点时,它仍然成功并完成下载。 可能是模拟器中的一个错误? - Aleks G
2
很有趣:如果你在模拟器上关闭wifi,并将模拟器的“数据”选项设置为“未注册”(或拒绝),并将“信号强度”设置为“无”,该应用程序仍然可以获得连接!/神奇的互联网魔法 - Someone Somewhere
即使在飞行模式下,WiFi 仍然可用,设备仍然具有互联网连接。 - Adam Burley
是的,我同意。我正在为我的应用程序进行错误检查,但当设备没有互联网连接时,我无法触发任何断点。如果你只想跟踪,这真的很令人沮丧。如果您可以在模拟器没有活动互联网连接的情况下进行调试以测试这些场景,那将会更好。 - Matthew Jones
显示剩余3条评论

30

你可以通过在任何Android模拟器中按下F8来禁用互联网连接。 这是一个切换按钮,所以如果它没有互联网连接,它将开始互联网连接;如果它已经有了互联网连接,那么它将断开连接。


不,你没有迟到。谢谢。 - Krishnabhadra
这不再允许我进行调试 - 即使按两次f8,Eclipse仍会启动一个新的模拟器。其他方法(如关闭飞行模式)也是如此。 - Radu Simionescu
6
在我的情况下它无法正常工作。我正在使用Android Studio 3.3。 - Abdul Waheed

28

尝试下面的命令

WIFI:
$ adb shell svc wifi enable
$ adb shell svc wifi disable
MOBILE DATA:
$ adb shell svc data enable
$ adb shell svc data disable

1
打开和关闭Wi-Fi和移动数据并不是同一件事。有时候你想测试Wi-Fi是否打开(可能已连接),但没有互联网连接。 - nasch
2
在最新版本的Android Studio中对我不起作用。执行adb shell svc wifi disable后,wifi仍然处于启用状态。 - Adam Burley

25

Android Studio 3.0更新

只需拖动并打开控制中心,点击飞行模式按钮,就像在您的实际设备上所做的那样。

请耐心等待非常缓慢的模拟器。

输入图像描述


更智能的方式,在Windows和Mac两个模拟器中都可以运行。 - Kapil Rajput
1
我需要一个简短的键。有什么想法吗? - Aveek
2
我将手机设置为飞行模式,但仍然能够连接到互联网。 - Felix
3
即使我将手机设置为飞行模式,仍然可以连接到互联网,因为Wi-Fi仍然开启,而我找不到任何禁用它的方法。 - Adam Burley
它也从Metro服务器断开连接。 - Gustavo Garcia

16

有许多方法,我在这里解释两种方法。

  1. 只需按下 F8 键以启用或禁用互联网连接。
  2. 只需启动您的模拟器,按住电源按钮,然后选择:

关闭飞行模式

它会断开您的模拟器与互联网的连接。如果您想重新连接,请再次按住电源按钮并选择:

打开飞行模式

然后您的模拟器的互联网连接将恢复工作!


即使在飞行模式下,它仍然可以连接到WiFi,因此互联网仍然可用。另外,F8对我没有任何作用。 - Adam Burley

3

要在真实设备(也在模拟器中)上检查,请转到:

设置 > 无线和网络 > 移动网络 > 启用数据

取消选中它,就可以工作了。


这只禁用移动数据,而不是WiFi。 - Adam Burley

1
你可以在模拟器中像在真实手机中一样禁用互联网连接

  1. 向下滑动屏幕以查看通知面板。
  2. 点击数据网络图标。
  3. 关闭移动网络。

我刚在加载到模拟器中的 Android 4.4 镜像中成功尝试了它。


2
这只禁用移动数据,而不是WiFi。 - Adam Burley

1
最近的模拟器版本提供了一种更简单的方式,从ADT视图开始:
Window -> Show view -> Other... -> Android -> Emulator Control

只需更改"Telephony Status"中的"Data"值,然后再次测试您的应用程序即可。

这在ADT时代可能有效,但现在ADT已不再受支持,对我来说这不起作用。 - Adam Burley

1

对于这个问题,其他的答案都不适用于我,唯一有效的方法是

adb shell -> su -> ifconfig wlan0 down

你可以使用 ifconfig wlan0 up 来重新启动它。(即使执行了ifconfig wlan0 up,我也不得不重新启动设备。)

在尝试此方法之前,请确保已禁用移动数据(或设备处于飞行模式)。

非常感谢noamtm's answer提供的提示!


0

禁用 Android 模拟器中的互联网步骤:

  1. 首先将应用程序安装到模拟器中
  2. 长按模拟器的电源按钮
  3. 选择飞行模式

现在您的模拟器将不接受互联网连接。

注意:在飞行模式之后,您无法在模拟器中安装和运行应用程序,因此在将其放入飞行模式之前,请在模拟器中运行您的应用程序。

要再次更改为正常状态,请长按模拟器并选择相同的选项。


1
设备即使在飞行模式下仍然可以连接WiFi。 - Adam Burley

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