Android 在Xamarin获取棉花糖的Mac地址

Android 在Xamarin获取棉花糖的Mac地址,android,xamarin,android-6.0-marshmallow,mac-address,Android,Xamarin,Android 6.0 Marshmallow,Mac Address,我一直在尝试几种方法让MAC在Android 6.0上运行,但没有成功): 我已经拥有以下权限: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permiss

我一直在尝试几种方法让MAC在Android 6.0上运行,但没有成功):

我已经拥有以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
但是这行:
byte[]macBytes=physicalAddress.GetAddressBytes()返回一个空数组


任何人都可以解决这个问题?

好的,使用它就足够了:

权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
您是在真实设备上还是在模拟器上进行测试?

尝试使用以下代码:

public string GetMacAdress(Context context)
{
    string mac = GetMacAddressLegacy(context);

    if (mac == "02:00:00:00:00:00")
    {
        var interfaces = Java.Net.NetworkInterface.NetworkInterfaces;

        foreach (var nif in interfaces)
        {
            if (!nif.Name.ToLower().Contains("wlan")) continue;

            byte[] macBytes = nif.GetHardwareAddress();

            string macString = BitConverter.ToString(macBytes);
            if (!string.IsNullOrWhiteSpace(macString))   
                mac = macString.Trim().ToUpper().Replace("-", ":");
        }
    }

    return mac;
}
试着用这个方法

public static string getMacAddress()
{
    string macAddress = string.Empty;

    var all = Collections.List(Java.Net.NetworkInterface.NetworkInterfaces);

    foreach (var interfaces in all)
    {
        if (!(interfaces as Java.Net.NetworkInterface).Name.Contains("wlan0")) continue;

        var macBytes = (interfaces as 
        Java.Net.NetworkInterface).GetHardwareAddress();
        if (macBytes == null) continue;

        var sb = new System.Text.StringBuilder();
        foreach (var b in macBytes)
        {
            string convertedByte = string.Empty;
            convertedByte = (b & 0xFF).ToString("X2") + ":";

            if(convertedByte.Length == 1)
            {
                convertedByte.Insert(0, "0");
            }
            sb.Append(convertedByte);
        }

        macAddress = sb.ToString().Remove(sb.Length - 1);

        return macAddress;
    }
    return "02:00:00:00:00:00";
}
@jase正在工作!:)谢谢哈哈