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

关闭USB调试时用WebUSB连接安卓手机报错DOMException Acces denied

问题根因

你遇到的DOMException Access denied错误是安卓系统USB权限管控的正常拦截逻辑,和你的代码逻辑无关,核心原因如下:

  • USB调试关闭状态下,安卓系统默认拒绝所有未授权主机端发起的USB设备打开请求,仅允许MTP/PTP等系统预设的标准USB功能连接,不会开放自定义USB接口访问权限
  • USB音频这类标准USB设备类有系统默认的访问授权,WebUSB调用时不需要额外的特殊权限,所以不会触发报错;而安卓手机作为USB设备时,默认暴露的接口均为系统管控专属接口,未授权状态下禁止第三方应用(包括浏览器的WebUSB API)直接打开
实现需求的必要步骤

你的核心诉求是PC端通过WebUSB访问安卓手机的USB接口,需要完成以下前置配置和代码优化:

安卓侧配置(必做,无绕过方案)

  1. 必须开启安卓设备的「USB调试」开关,路径一般是「设置-开发者选项-USB调试」(开发者选项需要先连续点击系统版本号5次激活)
  2. 安卓设备连接PC后,在弹出的「允许来自这台计算机的USB调试」授权弹窗中点击确认,部分机型还需要将USB用途切换为「文件传输(MTP)」或者「USB配件」模式

代码优化

你的现有代码中requestDevice的过滤参数为空,会导致不同操作系统的权限校验逻辑异常,建议补充你要连接的安卓设备的VID(厂商ID)和PID(产品ID)过滤:

let device = null
let configValue = 0
let interfaceValue = 0

const connect = async() => {
    try {
      device = await navigator.usb.requestDevice({
        // 替换为你目标安卓设备的实际VID和PID,可在设备管理器/系统报告中查询
        filters : [
          { vendorId: 0xXXXX, productId: 0xYYYY }
        ]
      });
      await device.open()
      if(device.configurations.length > 0){
        configValue = device.configuration.configurationValue
        interfaceValue = device.configuration.interfaces[0].interfaceNumber
        await device.selectConfiguration(configValue)
        await device.claimInterface(interfaceValue)
      }
      console.log(device);
    } catch (error) {
      console.log(error);
    }
  }

系统侧额外配置(Windows环境必做)

Windows系统下默认不会给安卓设备分配WebUSB需要的WinUSB驱动,你需要使用Zadig工具,给目标安卓设备更换驱动为WinUSB版本后再进行连接测试,macOS和Linux环境无需额外配置驱动。

浏览器环境要求

WebUSB API仅在HTTPS域名或者localhost本地调试环境下可用,非上述环境中浏览器会直接禁用API调用权限,也会触发访问拒绝报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:18:04