Win10 IoT + RPI3 WiFiAdapter抛出Access Denied

时间:2016-11-15 18:16:21

标签: c# uwp wifi raspberry-pi3 windows-10-iot-core

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

代码我正在尝试运行:

 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()时,它只会抛出此错误:

  

访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))

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

2 个答案:

答案 0 :(得分:2)

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

所有wifi命令(例如ScanAsync() ConnectAsync())都无法在UI线程中运行。 我在一个单独的线程中运行它们,但我仍然阻止了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线程中运行时才有效。我对它进行了两种方式的测试,无论它在哪里运行,它似乎都能正常工作。

答案 1 :(得分:0)

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

.appmanifest