【问题标题】:Trouble with connecting to wifi in code in Xamarin在 Xamarin 的代码中连接到 wifi 的问题
【发布时间】:2020-08-28 12:16:18
【问题描述】:

我一直在尝试通过代码连接到特定的 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 部分。

感谢我能得到的任何帮助!

【问题讨论】:

    标签: xamarin mobile xamarin.forms


    【解决方案1】:

    您缺少一个关键方法 - reconnect()。您可以在WifiManager 的文档here 中阅读更多相关信息

    文档的重要部分是:

    如果我们当前已断开连接,请重新连接到当前活动的接入点。

    所以,在断开连接并启用新网络后,你需要做什么,最后调用这个,你就可以开始了:

    wifiManager.Disconnect();
    wifiManager.EnableNetwork(network.NetworkId, true);
    wifiManager.Reconnect(); // This is the missing method
    

    注意:请记住,您使用的大部分 WifiManager 代码在 Android 10 开始时已过时。因此,如果您想针对 Android 10,则需要为Android 10+ 设备的连接性。

    【讨论】:

    • 谢谢!标记为最佳答案。
    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2012-11-03
    • 2023-04-04
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多