我发现了一些使用Java的示例,但是在将方法构造为c#时遇到了麻烦。任何人都可以发布一个简单的C#示例来获取我设备的Mac地址FOR Marshmallow(6.0)。我了解还有其他获取唯一ID的方法,我现在对导入组件并不十分感兴趣。我将Xamarin与Visual Studio 2015一起使用。
我具有以下权限:
ACCESS_WIFI_STATE互联网READ_PHONE_STATE
我尝试过的唯一代码是用于android 6.0以下版本的简单方法。任何帮助表示赞赏。
编辑:我不相信这是重复的,因为我专门要求ac#版本的代码
不幸的是,你不走运。从6.0版开始,Android限制对MAC地址的访问。如果您尝试查询当前设备的MAC地址,则将获得一个恒定值02:00:00:00:00:00
您仍然可以访问附近设备的MAC地址,如Android官方文档中所述:
要通过蓝牙和Wi-Fi扫描访问附近的外部设备的硬件标识符,您的应用现在必须具有ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限:
编辑:虽然不支持获取MAC地址的官方方法,但似乎可以通过绕路而行。我在这里发布一个最小的示例,该示例仅遍历所有网络接口,如果有,则将MAC地址输出到控制台:
// NetworkInterface is from Java.Net namespace, not System.Net
var all = Collections.List(NetworkInterface.NetworkInterfaces);
foreach (var interface in all)
{
var macBytes = (interface as NetworkInterface).GetHardwareAddress();
if (macBytes == null) continue;
var sb = new StringBuilder();
foreach (var b in macBytes)
{
sb.Append((b & 0xFF).ToString("X2") + ":");
}
Console.WriteLine(sb.ToString().Remove(sb.Length - 1));
}
要在现实世界中使用此功能,需要进行一些空引用检查和其他修改,但是它可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句