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>
尝试在 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>