Win10 IoT + RPI3 WiFiAdapter throws Access Denied
本文关键字:throws Access Denied WiFiAdapter RPI3 IoT Win10 | 更新日期: 2023-09-27 18:17:59
尝试在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()
时,它只抛出这个错误:
访问被拒绝。(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
我错过了什么或做错了什么?
明白了。这是文档中不清楚或缺少的内容。
所有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线程中运行。我以两种方式测试了它,无论在哪里运行,它似乎都能工作。
对我来说,问题是.appmanifest
文件中缺少的功能:
<Capabilities>
<DeviceCapability Name="wiFiControl"/>
</Capabilities>