我一直在尝试通过代码连接到特定的wifi,但没有成功。 这就是我想出的:
public void ConnectToWifi(string ssid, string password)
{
WifiManager wifiManager = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);
if (!wifiManager.IsWifiEnabled)
{
wifiManager.SetWifiEnabled(true);
}
string formattedSsid = $""{ssid}"";
string formattedPassword = $""{password}"";
WifiConfiguration wifiConfig = new WifiConfiguration
{
Ssid = formattedSsid,
PreSharedKey = formattedPassword
};
var addNetwork = wifiManager.AddNetwork(wifiConfig);
WifiConfiguration network = wifiManager.ConfiguredNetworks.FirstOrDefault(n => n.Ssid == ssid);
if (network == null)
{
Console.WriteLine($"Cannot connect to network: {ssid}");
return;
}
wifiManager.Disconnect();
bool enableNetwork = wifiManager.EnableNetwork(network.NetworkId, true);
}
我添加了权限。 在测试时,它至少打开了wifi,所以我知道它在那之前一直有效。似乎不起作用的是AddNetwork部分。
我很感激我能得到的任何帮助!
您缺少一个关键方法 -reconnect()
。您可以在WifiManager
的文档中阅读更多相关信息
此处文档的重要部分是:
如果我们当前断开连接,请重新连接到当前活动的接入点。
因此,在断开连接并启用新网络后,您需要做什么,最后打电话,您就可以开始了:
wifiManager.Disconnect();
wifiManager.EnableNetwork(network.NetworkId, true);
wifiManager.Reconnect(); // This is the missing method
注意:请记住,您使用的大多数WifiManager
代码在Android 10开始已经过时。因此,如果您想定位Android 10,则需要为装有Android 10 +的设备编写额外的代码。