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

如何使用Flutter获取设备当前连接的接入点MAC地址?

如何用Flutter获取当前连接接入点的MAC地址

嘿,刚好我对这个问题挺熟悉的,来给你捋清楚:

核心结论:Flutter SDK本身无直接方法

Flutter的跨平台核心API并没有暴露获取接入点MAC地址的功能——毕竟这个属于设备底层的网络硬件信息,得依赖原生平台的能力来实现,所以我们需要借助第三方Flutter插件来搞定。

实现步骤:用插件搞定

目前社区里比较常用的插件是wifi_info_flutter,下面是具体操作流程:

1. 添加插件依赖

在你的pubspec.yaml文件里添加依赖:

dependencies:
  flutter:
    sdk: flutter
  wifi_info_flutter: ^2.0.1 # 建议确认最新版本后使用

然后运行flutter pub get完成依赖安装。

2. 配置平台权限

因为获取网络硬件信息涉及隐私,不同平台需要配置对应的权限:

Android端

在android/app/src/main/AndroidManifest.xml中添加权限声明:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

⚠️ 重要提醒:从**Android 10(API 29)**开始,出于隐私保护,应用无法获取接入点的真实MAC地址,系统会返回固定占位符02:00:00:00:00:00,这是系统层面的限制,任何插件都绕不开。

iOS端

在ios/Runner/Info.plist中添加定位权限描述(iOS获取WiFi信息必须依赖定位权限):

<key>NSLocationWhenInUseUsageDescription</key>
<string>需要获取位置权限以获取WiFi接入点信息</string>

⚠️ 同样要注意:从iOS 14开始,设备默认使用私有MAC地址连接WiFi,你获取到的接入点MAC会是匿名化后的地址,并非真实物理地址,这也是系统隐私政策的强制限制。

3. 编写代码获取MAC地址

导入插件后,就可以调用API获取信息了:

import 'package:wifi_info_flutter/wifi_info_flutter.dart';

Future<String?> getConnectedAPMac() async {
  try {
    final wifiInfo = await WifiInfo().getWifiInfo();
    return wifiInfo.bssid; // BSSID就是接入点的MAC地址
  } catch (e) {
    print('获取接入点MAC失败:$e');
    return null;
  }
}

调用这个方法就能拿到接入点的MAC地址啦,记得提前处理权限申请逻辑(比如在Android和iOS上弹出权限请求弹窗)。

其他可选插件

如果你觉得wifi_info_flutter不符合需求,也可以试试connectivity_plus,不过它主要侧重网络连接状态检测,要获取MAC地址还得结合其他逻辑,不如前者直接。


内容的提问来源于stack exchange,提问作者Alloysius Goh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:56:00