尝试使用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))
我错过了什么或做错了什么?
答案 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