You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android如何通过代码单独检测无线调试功能是否启用?

检测Android无线调试状态的解决方案

已实现的基础检测功能

目前已完成开发者模式与USB调试状态的检测,运行正常的代码如下:

private fun check_My_Android_Mobile_Developer_Mode_Status() {
    // 检测USB调试状态
    val adb: Int = Settings.Secure.getInt(this.contentResolver,
            Settings.Global.ADB_ENABLED, 0)
    Toast.makeText(this,"USB调试检测: adb状态:"+adb, Toast.LENGTH_LONG).show()

    // 检测开发者模式状态
    if(Settings.Secure.getInt(this.getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) == 1) {
        Toast.makeText(this,"开发者模式已启用: 显示提醒", Toast.LENGTH_LONG).show()
    } else {
        Toast.makeText(this,"开发者模式未启用: 运行安全模式", Toast.LENGTH_LONG).show()
    }
}

需求:单独检测无线调试状态

需要在开发者模式已开启的前提下,单独判断无线调试模式是否启用。

分版本实现方案

针对不同Android版本,无线调试的检测逻辑存在差异,具体实现代码如下:

private fun checkWirelessAdbStatus() {
    // 先校验开发者模式是否开启
    val isDevModeEnabled = Settings.Secure.getInt(contentResolver, 
        Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) == 1
    if (!isDevModeEnabled) {
        Toast.makeText(this, "开发者模式未开启,无线调试无法启用", Toast.LENGTH_LONG).show()
        return
    }

    val isWirelessAdbEnabled: Boolean
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        // Android 11及以上:读取系统公开设置项
        isWirelessAdbEnabled = Settings.Global.getInt(contentResolver, 
            Settings.Global.WIRELESS_ADB_ENABLED, 0) == 1
    } else {
        // Android 10及以下:通过反射读取系统属性判断
        val adbTcpPort = getSystemProperty("service.adb.tcp.port")
        isWirelessAdbEnabled = adbTcpPort != null && adbTcpPort != "-1"
    }

    val message = if (isWirelessAdbEnabled) "无线调试已启用" else "无线调试未启用"
    Toast.makeText(this, message, Toast.LENGTH_LONG).show()
}

// 反射读取系统属性的辅助方法
private fun getSystemProperty(propertyKey: String): String? {
    return try {
        val systemPropClass = Class.forName("android.os.SystemProperties")
        val getMethod = systemPropClass.getMethod("get", String::class.java)
        getMethod.invoke(null, propertyKey) as String
    } catch (e: Exception) {
        e.printStackTrace()
        null
    }
}

注意事项

  • 权限要求:需要在AndroidManifest.xml中添加权限:<uses-permission android:name="android.permission.READ_SETTINGS" />;Android 13及以上版本,还需动态申请该权限。
  • 版本差异说明:
    • Android 11+系统提供了WIRELESS_ADB_ENABLED公开设置项,可直接读取判断状态。
    • Android 10及以下无公开系统设置项,需通过反射读取service.adb.tcp.port属性:默认USB调试状态下该值为-1,开启无线调试后会被设置为5555或自定义端口,因此值不为-1即可判定无线调试已启用。

内容的提问来源于stack exchange,提问作者harikrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:55:48