在Android系统中,通过命令行操作Wi-Fi功能是开发者或高级用户进行网络调试、自动化测试或系统管理的重要手段,Android基于Linux内核,其命令行环境(如ADB Shell)提供了丰富的工具来管理Wi-Fi连接,包括扫描网络、获取配置、启用/禁用Wi-Fi等操作,以下是关于Android命令行Wi-Fi操作的详细说明。

Wi-Fi命令行基础工具
Android的Wi-Fi功能主要由wpa_supplicant和wpa_cli工具管理,前者是后台守护进程,负责处理Wi-Fi连接和认证,后者是命令行客户端,用于与wpa_supplicant交互,通过ADB Shell可以调用这些工具。
启用/禁用Wi-Fi
# 启用Wi-Fi svc wifi enable # 禁用Wi-Fi svc wifi disable
svc是Android系统服务控制工具,可快速切换Wi-Fi状态,也可通过设置系统属性实现:
# 启用Wi-Fi(需root权限) setprop wifi.on 1 # 禁用Wi-Fi setprop wifi.on 0
扫描可用Wi-Fi网络
# 启动扫描 wpa_cli scan # 查看扫描结果(需等待几秒) wpa_cli scan_results
扫描结果会显示网络ID(SSID)、BSSID、信号强度(frequency)、加密方式(flags)等信息,
bssid / frequency / signal level / flags / ssid
00:11:22:33:44:55 2412 -65 [WPA2-PSK-CCMP][ESS] MyWiFi
连接指定Wi-Fi网络
连接Wi-Fi需配置网络参数,包括SSID、密码和加密方式(如WPA2-PSK),以下是步骤:

# 添加网络配置(返回网络ID,如0) wpa_cli add_network # 设置网络名称(SSID) wpa_cli set_network 0 ssid '"MyWiFi"' # 设置密码(PSK模式下) wpa_cli set_network 0 psk '"mypassword"' # 设置加密方式(WPA2-PSK) wpa_cli set_network 0 key_mgmt WPA-PSK # 启用该网络配置 wpa_cli enable_network 0 # 保存配置 wpa_cli save_config
若网络为开放(无加密),则无需设置psk,仅需指定key_mgmt NONE。
断开Wi-Fi连接
# 断开当前连接 wpa_cli disconnect # 禁用特定网络配置 wpa_cli disable_network 0
查看Wi-Fi状态
# 查看wpa_supplicant状态 wpa_cli status # 查看当前连接信息 dumpsys wifi | grep -E "SSID|BSSID|ipaddress" # 查看网络接口状态 ifconfig wlan0
高级操作与注意事项
修改Wi-Fi配置文件
wpa_supplicant的配置文件通常位于/data/misc/wifi/wpa_supplicant.conf,可通过cat或vi(需root)查看或编辑,手动修改后需重启wpa_supplicant服务:
# 停止服务(需root) stop wpa_supplicant # 启动服务 start wpa_supplicant
监控Wi-Fi日志
# 实时查看wpa_supplicant日志 logcat | grep wpa_supplicant # 查看Wi-Fi相关系统日志 logcat -s WifiManager
常见问题处理
- 连接失败:检查密码是否正确,或尝试重新扫描网络(
wpa_cli rescan)。 - 无法启用Wi-Fi:确认设备驱动正常,或检查
wpa_supplicant进程是否异常(通过ps | grep wpa_supplicant)。 - 权限不足:部分命令需root权限,可通过
su切换或使用adb root(需设备已解锁)。
操作示例表格
| 操作命令 | 功能描述 | 示例输出 |
|---|---|---|
svc wifi enable |
启用Wi-Fi | 无输出,成功后Wi-Fi图标亮起 |
wpa_cli scan |
扫描Wi-Fi网络 | OK |
wpa_cli scan_results |
查看扫描结果 | bssid/ssid/...(列表形式) |
wpa_cli add_network |
添加新网络配置 | 0(返回网络ID) |
wpa_cli status |
查看连接状态 | wpa_state=COMPLETED |
dumpsys wifi |
导出Wi-Fi详细信息 | 包含IP、DNS、信号强度等 |
相关问答FAQs
Q1: 如何通过命令行获取当前连接Wi-Fi的IP地址?
A1: 使用以下命令可查看当前Wi-Fi接口的IP信息:
ifconfig wlan0 | grep "inet addr"
或通过系统服务导出:

dumpsys netd | grep "wlan0"
输出示例:inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0。
Q2: 如何在命令行中保存多个Wi-Fi网络配置并自动连接?
A2: 使用wpa_cli add_network为每个网络分配唯一ID(如0、1),分别配置SSID和密码后,通过list_networks查看可用网络,设置优先级(set_network 0 priority 1)可控制自动连接顺序,数值越小优先级越高,保存配置后,wpa_supplicant会根据信号强度和优先级自动选择最佳网络。
