如何通过adb测试wifi连接?

12

我正在通过adb自动化WiFi的开关。

根据测试用例,我想要禁用/启用WiFi。

到目前为止,我在这里发现了很好的信息。

但是,在执行以下命令之前,我想要测试连接。

adb shell am start -a android.intent.action.MAIN -n         com.android.settings/.wifi.WifiSettings adb shell input keyevent 19 & adb shell input keyevent 19 & adb shell input keyevent 23

以上命令可以禁用已启用的wifi,启用已禁用的wifi。我想先测试连接并在需要时采取行动。我想知道是否有一种使用adb命令来实现的方法。这可以通过编程实现,但我希望通过adb完成以使其更可靠。

此外,以下命令仅在设备已经root的情况下才有效。

adb shell "svc wifi enable" 

以下命令可以在屏幕上启动测试,但不通过adb提供任何信息

adb shell am start -n com.android.settings/.wifi.WifiStatusTest
7个回答

19

了解设备的Wifi状态:

adb shell dumpsys wifi

仅需了解它是否已启用:

adb shell dumpsys wifi | grep "Wi-Fi is"

要了解更详细的状态:

adb shell dumpsys wifi | grep "mNetworkInfo"
  1. 如果连接到一个有效的网络,它会显示"已连接/CONNECTED"。同时也会显示连接网络的名称。
  2. 如果wifi已经启用但还没有连接到网络,它会显示"未连接/正在扫描"
  3. 如果wifi被禁用,它会显示"未连接/未连接"

从Android O开始,adb shell dumpsys wifi | grep "curState"将根据状态给出以下3个输出:1. "InitialState":如果Wifi关闭。2. "DisconnectedState":如果wifi已打开但未连接,3. "ConnectedState":如果设备已连接到网络。 - Abhishek
如果我在Java中使用Process和Runtime等命令,这样做会有效吗? - Keselme
adb shell dumpsys wifi | grep "mNetworkInfo" 在 Android 11 上无法使用。我们有任何替代方案吗? - Dhakshina Moorthy

15

以下命令将提供您的互联网状态和连接模式(蜂窝数据或Wi-Fi)

adb shell dumpsys connectivity

5

如果您想确定WiFi是否已开启,则可以运行adb shell settings get global wifi_on,如果已开启则返回1,否则返回0。

如果有多台设备连接,则可以运行adb -s [UDID_HERE] shell settings get global wifi_on获取单个手机的WiFi状态。要查找UDID,可以运行adb devices


4
这只会告诉您是否有互联网访问,但是您可以执行以下操作:
adb shell ping www.google.com

但是这在我的Sony Xperia设备上不起作用。这个命令没有提供任何信息。 - Venkatesh
在输入这个后,你没有得到任何东西吗? - Roberto Anić Banić
不行。但是我可以在设备上连接到互联网。 - Venkatesh
很抱歉它不起作用,我会尝试找其他的东西。 - Roberto Anić Banić

3
adb shell dumpsys wifi | sed -n '1p'

比...更快、更安全
adb shell dumpsys wifi | grep "Wi-Fi is"

dumpsys wifi 输出的结果可能包含被其他应用程序污染的系统日志。


命令行 "dumpsys wifi" 对我有效。但是要注意,在我的情况下,我发现在一个Android设备上,“Wi-Fi已启用”的输出在第一行,而在另一部手机上,这种输出不在第一行,因此我认为使用 grep "Wi-Fi is" 是更好的方法。 - MadHatter

0

Atish的答案在Android 11/R之前一直很正常。从这个操作系统开始,我建议使用Abhishek的建议:

adb shell dumpsys wifi | grep "curState=ConnectedState"

-1
不完美,但你可以倒出UI布局然后像这样搜索ON/OFF文本(bash):
adb pull $(adb shell uiautomator dump | grep -o '[^ ]*.xml') ui.xml
grep 'text="OFF"' ui.xml
if [ $? == 0 ]; then
  # Turn WIFI on
fi

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