如何在Android 10及以下版本中以编程方式检查WiFi调试是否启用?
Android 10中
adb_wifi_enabled读取无效的问题及解决办法 现象说明
在Android 11及以上版本中,通过代码Settings.Global.getInt(getContentResolver(), "adb_wifi_enabled", 0) != 0可以准确判断ADB WiFi是否处于开启状态,但同样的逻辑在Android 10设备上完全不生效,始终返回false。
原因分析
adb_wifi_enabled这个Settings.Global字段是从Android 11(API 30)开始才被系统正式公开的设置项,Android 10系统中根本不存在这个键值,所以调用Settings.Global.getInt()读取时会一直返回你设置的默认值0,导致判断逻辑失效。
Android 10的替代方案
要在Android 10上判断ADB WiFi是否开启,可以通过读取系统属性service.adb.tcp.port来实现:
import android.os.SystemProperties; // 判断ADB WiFi是否开启 public boolean isAdbWifiEnabled() { // 默认值-1表示ADB仅通过USB连接,大于0的数值表示开启了TCP端口(即ADB WiFi开启) String adbTcpPort = SystemProperties.get("service.adb.tcp.port", "-1"); return !"-1".equals(adbTcpPort); }
注意事项
使用SystemProperties读取该属性需要申请权限:
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
该权限属于系统级权限,你的应用需要具备系统签名或者被放置在系统的priv-app目录下才能正常获取到属性值。
内容的提问来源于stack exchange,提问作者user20329636
相关产品推荐
相关产品推荐

