如何通过adb测试wifi连接?

时间:2015-07-24 07:28:40

标签: android shell automation adb android-wifi

我通过adb自动关闭/打开wifi。

我想根据测试用例

禁用/启用wifi

到目前为止,我找到了很好的信息here

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

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来完成,以使其更可靠。

此命令仅在设备已植根时才起作用

adb shell "svc wifi enable" 

此外,命令会在屏幕上启动测试,但不会通过adb提供任何信息

adb shell am start -n com.android.settings/.wifi.WifiStatusTest

6 个答案:

答案 0 :(得分:9)

下面的命令将为您提供互联网状态和连接模式(手机或Wi-Fi)

adb shell dumpsys connectivity

答案 1 :(得分:7)

了解有关设备Wifi状态的所有信息:

  

adb shell dumpsys wifi

只知道它是否已启用:

  

adb shell dumpsys wifi | grep“Wi-Fi is”

了解更详细的状态:

  

adb shell dumpsys wifi | grep“mNetworkInfo”

  1. 如果连接到有效的网络,则会显示 的 “CONNECTED / CONNECTED” 即可。它还显示已连接网络的名称。
  2. 如果已启用wifi但尚未连接到网络,则会显示 “DISCONNECTED / SCANNING”
  3. 如果禁用wifi,则会显示 “DISCONNECTED / DISCONNECTED”

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

这只会告诉您是否有互联网访问权限,但您可以这样做:

adb shell ping www.google.com

答案 4 :(得分:0)

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

更快,更安全
adb shell dumpsys wifi | grep "Wi-Fi is"

因为'dumpsys wifi'的输出包含可能已被其他应用程序污染的系统日志

答案 5 :(得分:-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