You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Essentials: Connectivity能否获取Xamarin.Forms中已连接网络的SSID

Xamarin.Forms中Xamarin.Essentials Connectivity能否获取SSID?

Xamarin.Essentials的Connectivity模块无法直接获取已连接Wi-Fi网络的SSID,它的核心能力仅包括检测网络连接状态、判断连接类型(如Wi-Fi、蜂窝网络、以太网等),并未提供获取Wi-Fi名称的API。

若需要获取SSID,需通过Xamarin.Forms的**依赖服务(Dependency Service)**调用各平台原生API实现,以下是各平台的核心实现方式:

  • Android:
    需先在AndroidManifest.xml中声明ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限,然后通过WifiManager获取当前连接的Wi-Fi信息:

    using Android.Content;
    using Android.Net.Wifi;
    
    public string GetCurrentSsid()
    {
        var wifiManager = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);
        var wifiInfo = wifiManager.ConnectionInfo;
        return wifiInfo.Ssid?.Trim('"'); // 移除SSID自带的引号
    }
    
  • iOS:
    需在Info.plist中添加位置权限声明(NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription),然后使用CNCopyCurrentNetworkInfo获取网络信息:

    using System;
    using CoreFoundation;
    using CoreTelephony;
    
    public string GetCurrentSsid()
    {
        var networkInfo = CNCopyCurrentNetworkInfo(IntPtr.Zero);
        if (networkInfo == IntPtr.Zero) return null;
        
        using (var dict = new NSDictionary(networkInfo))
        {
            return dict.ObjectForKey(new NSString("SSID"))?.ToString();
        }
    }
    
  • UWP:
    需在Package.appxmanifest中声明wiFiControl权限,通过WiFiAdapter扫描并筛选当前连接的网络:

    using System.Linq;
    using Windows.Devices.WiFi;
    
    public async System.Threading.Tasks.Task<string> GetCurrentSsid()
    {
        var accessStatus = await WiFiManager.RequestAccessAsync();
        if (accessStatus != WiFiAccessStatus.Allowed) return null;
        
        var adapters = await WiFiAdapter.FindAllAdaptersAsync();
        var currentAdapter = adapters.FirstOrDefault();
        if (currentAdapter == null) return null;
        
        await currentAdapter.ScanAsync();
        return currentAdapter.NetworkReport.AvailableNetworks
            .FirstOrDefault(n => n.ConnectionStatus == WiFiConnectionStatus.Connected)
            ?.Ssid;
    }
    

内容的提问来源于stack exchange,提问作者F.F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:35:50