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

UWP应用读取AirPods Pro电池时触发E_ACCESSDENIED权限错误求助

解决UWP连接AirPods Pro RFCOMM服务时的E_ACCESSDENIED错误

你碰到的这个Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))错误,核心原因是UWP的蓝牙权限声明不够精准,加上AirPods的蓝牙服务特性需要特定的权限配置才能访问。结合你提供的代码和manifest修改记录,我整理了几个关键的修复步骤:

1. 完善Package.appxmanifest的权限配置

UWP的沙箱机制要求你精准声明所有要访问的蓝牙服务类型,只泛泛声明bluetooth.rfcomm是不够的。你需要补充以下配置:

  • 添加bluetooth.genericAttributeProfile权限:AirPods的电量数据主要通过GATT服务传输,即使你用RFCOMM,也可能依赖这个权限
  • 确保RFCOMM服务ID的声明完全匹配你要访问的服务

完整的Capabilities配置应该是这样的:

<Capabilities>
    <Capability Name="internetClient"/>
    <Capability Name="privateNetworkClientServer"/>
    <!-- 蓝牙基础权限 -->
    <DeviceCapability Name="bluetooth"/>
    <DeviceCapability Name="bluetooth.genericAttributeProfile"/>
    <!-- 精准声明RFCOMM服务ID -->
    <DeviceCapability Name="bluetooth.rfcomm">
        <Device Id="any">
            <Function Type="serviceId:0000111e-0000-1000-8000-00805f9b34fb" />
        </Device>
    </DeviceCapability>
</Capabilities>

2. 确保设备处于有效连接状态

UWP的BluetoothDevice.FromIdAsync方法虽然能获取已配对设备,但如果设备只是配对未连接,后续的服务访问会失败。在代码里增加连接状态检查:

BluetoothDevice bluetoothDevice = await BluetoothDevice.FromIdAsync(connectedDevice.Id);
if (bluetoothDevice.ConnectionStatus != BluetoothConnectionStatus.Connected)
{
    // 这里可以提示用户确保AirPods处于连接状态
    continue;
}

3. 代码调试与优化

你的空catch块会掩盖关键错误信息,建议修改成输出异常详情,方便排查:

try {
    var socket = new StreamSocket();
    await socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
    // 连接成功后的逻辑
} catch (Exception ex) {
    Debug.WriteLine($"连接错误:{ex.Message},HRESULT:{ex.HResult:X8}");
}

另外,AirPods的电量数据其实更适合通过GATT电池服务获取,而不是RFCOMM。如果你的目标是读取电量,建议尝试访问GATT服务0000180f-0000-1000-8000-00805f9b34fb,这个方式更稳定,权限配置也更简单。

最后提醒

UWP的蓝牙权限在不同Windows版本上可能有细微差异,确保你的测试设备运行的是较新版本的Windows 10/11,同时在开发模式下调试时,允许应用访问蓝牙设备。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:52:37