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

如何在.NET MAUI应用中获取已检测到的WiFi网络SSID?

在.NET MAUI中获取已检测到的WiFi网络SSID(Android平台)

Android 10(API级别29)开始,旧的WifiManager.ScanResults访问方式权限收紧且部分API标记过时,以下是适配后的实现步骤:

1. 添加必要权限

在Platforms/Android/AndroidManifest.xml中添加权限声明:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Android 12+ 专属权限,可替代位置权限用于WiFi扫描 -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" />

2. 请求运行时权限

由于位置、附近WiFi设备权限属于危险权限,需动态请求:

using Microsoft.Maui.ApplicationModel;

// 在交互逻辑中(如按钮点击)执行权限请求
var locationStatus = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
if (locationStatus != PermissionStatus.Granted)
{
    locationStatus = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
}

// Android 12+ 额外请求附近WiFi设备权限
if (DeviceInfo.Version.Major >= 12)
{
    var wifiPermissionStatus = await Permissions.CheckStatusAsync<Permissions.NearbyWifiDevices>();
    if (wifiPermissionStatus != PermissionStatus.Granted)
    {
        wifiPermissionStatus = await Permissions.RequestAsync<Permissions.NearbyWifiDevices>();
    }
}

3. 获取WiFi扫描结果(Android平台特定代码)

使用MAUI的条件编译编写Android专属逻辑:

#if ANDROID
using Android.Content;
using Android.Net.Wifi;

// 获取WifiManager实例
var wifiManager = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);

// 触发扫描以获取最新结果(Android 10+标记为过时,但仍可使用)
bool scanInitiated = wifiManager.StartScan();
if (!scanInitiated)
{
    // 扫描启动失败,可添加错误处理逻辑
    return;
}

// 遍历扫描结果提取SSID
foreach (var result in wifiManager.ScanResults)
{
    string ssid = result.Ssid;
    if (!string.IsNullOrEmpty(ssid))
    {
        // 处理获取到的SSID,如打印或添加到列表
        Console.WriteLine($"检测到WiFi: {ssid}");
    }
}
#endif

注意事项

  • 位置服务必须开启:即使权限已授予,设备位置关闭时仍无法获取扫描结果。
  • 隐藏网络:隐藏WiFi的SSID为空字符串,无法直接识别。
  • 前台限制:Android 10+仅允许前台应用获取扫描结果;Android 12+使用NEARBY_WIFI_DEVICES权限时,不可用于位置跟踪,否则仍需位置权限。

内容的提问来源于stack exchange,提问作者loury Pe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:45:26