如何通过 ADB 找到 WiFi 网络共享状态?

How to find the WiFi tethering state through ADB?

我只是想知道如何通过 ADB 找到 Wifi 网络共享的状态。

虽然,有一些选项可以通过 WifiManager() 找到状态,如本 answer 中所述,我只想知道是否可以通过 ADB 找到状态?

您可以使用 adb shell dumpsys wifi 并搜索 curState=TetheredState 检查 wifi 网络共享是否已启用。

命令 adb shell dumpsys wifi 对我不起作用。

所以,这是另一个解决方案:

  1. 运行 adb shell dumpsys connectivity
  2. 搜索界面模式tetherableWifiRegexs:
  3. 使用该正则表达式模式搜索启用的接口。示例:ap\d - TetheredState
  4. 如果匹配,则 WiFi 网络共享开启

这也是我的 Python 实现:

import re
import subprocess
import time

def run_adb(command):
    res = subprocess.run(['adb'] + command.split(), capture_output=True)
    time.sleep(0.1)
    return res

def is_wifi_hotspot_enabled():
    output = run_adb('shell dumpsys connectivity').stdout.decode()

    pattern = 'ap\d'
    if match := re.search('tetherableWifiRegexs: \[(.*)\]', output):
        pattern = match.group(1)

    match = re.search(f'{pattern} - TetheredState', output)
    return (match is not None)

shell dumpsys connectivit

wlan0 - TetheredState - lastError = 0
wlan0 - AvailableState - lastError = 0