c# - 在 Xamarin Forms Android 10 中以编程方式连接到 wifi
问题描述
我无法在 Android 10 中连接到 wifi。我的代码在 Android 9 之前都可以正常工作,我一直在尝试为 Android 10 实现相同的代码,但没有任何运气:(
private void RequestNetwork(string _ssid, string _passphrase)
{
var specifier = new WifiNetworkSpecifier.Builder()
.SetSsid(_ssid)
.SetWpa2Passphrase(_passphrase)
.Build();
var request = new NetworkRequest.Builder()
.AddTransportType(TransportType.Wifi) // we want WiFi
.RemoveCapability(NetCapability.Internet) // Internet not required
.SetNetworkSpecifier(specifier) // we want _our_ network
.Build();
NetworkCallback _callback = new NetworkCallback();
connection_manager.RequestNetwork(request, _callback);
}
private class NetworkCallback : ConnectivityManager.NetworkCallback
{
public Action NetworkAvailable { get; set; }
//bool IsBusy = false;
public override void OnAvailable(Network network)
{
base.OnAvailable(network);
connection_manager.BindProcessToNetwork(network);
}
public override void OnUnavailable()
{
base.OnUnavailable();
}
}
解决方案
我看到您根据评论从我的博客文章中复制了代码。我猜你尝试过运行我在 GitHub 上提供的示例应用程序?
无论如何,首先确保您在清单中添加了以下权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
除了缺少权限之外,您提供的代码应该可以工作并向您显示一个如下所示的系统对话框: