Win10 IoT + RPI3 WiFiAdapter 抛出访问被拒绝

Win10 IoT + RPI3 WiFiAdapter throws Access Denied

尝试在 Raspberry Pi 3 上使用 WiFi 适配器,使用 Windows 10 IoT

我正在尝试的代码 运行:

 private async Task<IEnumerable<string>> ScanNetworksAsync()
    {
        var access = await WiFiAdapter.RequestAccessAsync();

        if (access != WiFiAccessStatus.Allowed)
        {
            throw new Exception("Not Allowed to use WiFi");
        }

        var wifi = WiFiAdapter.FindAllAdaptersAsync().AsTask().Result[0];

        await wifi.ScanAsync();

        return wifi.NetworkReport.AvailableNetworks.Select(n => n.Ssid);
    }

我确实拥有 Package.appxmanifest 中定义的能力:

<DeviceCapability Name="wiFiControl" />

当它尝试执行 wifi.ScanAsync() 时,它只是抛出这个错误:

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

我错过了什么或做错了什么?

想通了。这是文档中不清楚或遗漏的内容。

ScanAsync()ConnectAsync()等所有wifi命令都不能在UI线程中运行。 我在一个单独的线程中 运行ning 它们,但我仍然阻止 UI 无论如何(不在乎因为它只是一个测试应用程序)。显然这是不允许的。

我在示例应用中发现了一条评论:

        // RequestAccessAsync must have been called at least once by the app before using the API
        // Calling it multiple times is fine but not necessary
        // RequestAccessAsync must be called from the UI thread

这意味着 RequestAccessAsync() 仅在 UI 线程中的 运行 时有效。我用两种方式都测试了它,它似乎无论在哪里都有效 运行.

对我来说,问题是 .appmanifest 文件中缺少功能:

<Capabilities>
    <DeviceCapability Name="wiFiControl"/>
</Capabilities>