Flutter获取设备MAC地址

时间:2018-10-16 02:43:52

标签: dart flutter

flutter是否有一些代码或其他软件包来获取设备的MAC地址?如果有任何参考,请告诉我,谢谢。

3 个答案:

答案 0 :(得分:2)

Flutter只能执行底层操作系统所能做的事情,因为iOS 7和Android 6起,您将始终得到相同的响应02:00:00:00:00:00,这是由Apple和{{3 }},以解决隐私问题。

引用苹果

  

在iOS 7和更高版本中,如果您要求提供iOS设备的MAC地址,系统将返回值02:00:00:00:00:00。如果需要标识设备,请改用UIDevice的identifierForVendor属性。 (出于广告目的需要标识符的应用,应考虑改用ASIdentifierManager的advertisingIdentifier属性。)

引用Google

  

为了向用户提供更大的数据保护,从此版本开始,Android删除了使用Wi-Fi和Bluetooth API对应用的设备本地硬件标识符的编程访问。 WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()方法现在返回常数值02:00:00:00:00:00。

长话短说,没有可用的MAC地址。

答案 1 :(得分:1)

我使用了此软件包 wifi_info_plugin 并可以获得macadrress

答案 2 :(得分:0)

您可以使用get_mac软件包轻松获得Mac地址。它支持IOS和Android。 在要获取Mac地址的位置导入Dart文件。

然后参考此示例-:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get_mac/get_mac.dart';

class SplashScreen extends StatefulWidget {
  @override
  _SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {
  String _platformID = 'Unknown';

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Image.asset(
              "images/logo.png",
              height: 250.0,
              width: 250.0,
            ),
            Text(_platformID)
          ],
        ),
      ),
    );
  }

  Future<void> initPlatformState() async {
    String platformVersion;
    try {
      platformVersion = await GetMac.macAddress;
    } on PlatformException {
      platformVersion = 'Failed to get Device MAC Address.';
    }
    print("MAC-: " + platformVersion);
    if (!mounted) return;
    setState(() {
      _platformID = platformVersion;
    });
  }
}