我找到了一些使用Java的例子,但是我在构建c#方法时遇到了麻烦。任何人都可以发一个简单的c#示例获取我的设备的Mac地址,FOR Marshmallow(6.0)。我知道还有其他方法可以获得唯一的ID,我现在不必对导入组件感兴趣。我在Visual Studio 2015中使用Xamarin。
我已激活这些权限:
ACCESS_WIFI_STATE 互联网 READ_PHONE_STATE
我尝试的唯一代码是用于Android 6.0版本的简单方法。任何帮助表示赞赏。
编辑:我不相信这是重复的,因为我特别要求提供c#版本的代码
答案 0 :(得分:8)
不幸的是,你运气不好。从6.0版开始,Android限制对MAC地址的访问。如果您尝试查询当前设备的MAC地址,您将获得02:00:00:00:00:00
的常量值
您仍然可以访问附近设备的MAC地址,如official Android documentation:
中所述要通过蓝牙和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));
}
要在现实世界中使用它,需要进行一些空引用检查和其他修改,但它可以正常工作。