如何在Android中以编程方式检查WiFi ADB调试是否启用?
检查Android中WiFi ADB调试是否启用的替代方案
已知Settings.Global.ADB_ENABLED仅对应USB调试状态,要编程检查WiFi ADB调试的启用状态,可根据Android版本采用不同方案:
Android 11(API 30)及以上版本
Android 11开始提供了专门的全局设置项Settings.Global.ADB_WIFI_ENABLED,直接对应WiFi ADB的启用状态。通过读取该值即可判断:
import android.provider.Settings; import android.content.ContentResolver; // 获取WiFi ADB启用状态 public boolean isWifiAdbEnabled(ContentResolver resolver) { return Settings.Global.getInt(resolver, Settings.Global.ADB_WIFI_ENABLED, 0) == 1; }
注意:读取该设置需要android.permission.READ_GLOBAL_SETTINGS权限,这是系统级权限,普通第三方应用需通过系统签名或特殊授权才能获取。
Android 10及以下版本
此阶段没有官方公开的直接设置标志,可通过以下间接方式判断:
- 检测本地监听端口:WiFi ADB启用后,设备默认会在5555端口监听连接,可尝试连接该端口判断状态:
import java.net.Socket; import java.io.IOException; public boolean isWifiAdbActive() { try (Socket socket = new Socket("localhost", 5555)) { return socket.isConnected(); } catch (IOException e) { return false; } } - 读取非公开设置项:部分设备可读取
Settings.Secure.ADB_PORT的值,若返回非-1的有效端口号,说明WiFi ADB可能已启用,但该字段非官方标准,不同厂商ROM可能存在差异:String adbPort = Settings.Secure.getString(getContentResolver(), "adb_port"); boolean isWifiAdbEnabled = adbPort != null && !"-1".equals(adbPort);
注意事项
- 普通第三方应用通常无法获取系统级权限,因此端口检测是更通用的方案,但存在极小概率误判(如其他程序占用5555端口)。
- 部分厂商定制ROM可能修改WiFi ADB的实现逻辑,需针对不同品牌设备做适配。
内容的提问来源于stack exchange,提问作者Anuj Zunjarrao
相关产品推荐
相关产品推荐

