【问题标题】:Is possible to programmatically connect to Wi-Fi network using Xamarin?是否可以使用 Xamarin 以编程方式连接到 Wi-Fi 网络?
【发布时间】:2016-03-01 17:37:17
【问题描述】:

使用 Xamarin.iOS 和 Xamarin.Android,是否可以检查 Wi-Fi 是否启用? 而且,如果被禁用,是否可以启用它? 启用后,如何搜索和连接网络?

【问题讨论】:

    标签: android ios xamarin


    【解决方案1】:

    启用/禁用 Wifi:

    WifiManager wifiManager = (WifiManager)GetSystemService(WifiService);
    if (!wifiManager.IsWifiEnabled)
        wifiManager.SetWifiEnabled(true);
    else 
        wifiManager.SetWifiEnabled(false);
    

    更改 Wifi 状态的权限:

    android.permission.CHANGE_WIFI_STATE
    

    添加网络:

    var networkSSID = "Stack";
    var networkPass = "Overflow";
    var config = new WifiConfiguration();
    config.Ssid = '"' + networkSSID + '"';
    
    // For WPA/WPA2, WEP is different (still using WEP? shame on you ;-)
    config.PreSharedKey = '"' + networkPass + '"';
    wifiManager.AddNetwork(config);
    

    连接到网络:

    IList<WifiConfiguration> myWifi = wifiManager.ConfiguredNetworks;
    wifiManager.Disconnect();
    wifiManager.EnableNetwork(myWifi.FindFirst(x => x.Ssid.Contains(networkSSID)), true);
    wifiManager.Reconnect();
    

    【讨论】:

    • 感谢您的回复。我还没有实现,但这个解决方案似乎非常特定于 Xamarin.Android。 Xamarin.iOS 会怎样?
    • @LuísRigoni 你是对的,我的答案是针对 Android 的,一定是对 iOS 标签视而不见...... iOS 在允许访问网络方面非常严格。在 iOS 上,您的应用是沙盒的,无法访问 Wifi 管理器的钥匙串,因此无法以编程方式添加 SSID,也无法以编程方式连接到 SSID,您曾经能够读取当前 SSID,但 9.x 删除了该访问权限,在 iOS 5.1 中删除了打开默认设置...对于通用连接,我强烈建议:github.com/jamesmontemagno/Xamarin.Plugins/tree/master/…
    • 我认为这也需要:android.permission.ACCESS_WIFI_STATE
    猜你喜欢
    • 2019-10-07
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2017-02-04
    相关资源
    最近更新 更多