获取没有Wifi的Android设备的MAC地址

时间:2011-05-31 18:25:31

标签: android mac-address

如何获取没有Wifi接口的android设备的网络接口的MAC地址(例如android模拟器)?通过WifiManager获得的WifiInfo返回 null

修改

更清楚:我必须在本地网络上与现有的网络协议(不是由我设计)进行通信,我必须在注册阶段发送有效负载内通信接口的mac地址。

5 个答案:

答案 0 :(得分:23)

我将进行一次飞跃,并假设您需要此MAC地址,以便为设备建立唯一标识符。 Mac地址不是这样做的方法。

有一个名为“Identifying App Installations”的Android开发者博客帖子,其中涵盖了相当好的生成唯一ID的主题,包括流行的方法和优点/缺点。这绝对值得一读。与这篇文章相关的是以下引用:

  

可以从设备的WiFi或蓝牙硬件中检索Mac地址。我们不建议将其用作唯一标识符。首先,并非所有设备都具有WiFi。此外,如果未打开WiFi,则硬件可能不会报告Mac地址。

您可以使用的选项包括TelephonyManager.getDeviceId(),android.os.Build.SERIAL和Settings.Secure.ANDROID_ID,所有这些都在链接的帖子中有更详细的介绍。

答案 1 :(得分:17)

将/ sys / class / net / [something] / address作为文本文件

但它不太可能以你的思维方式发挥作用。

答案 2 :(得分:4)

See this post我提交了Utils.java示例以提供纯java实现。

Utils.getMACAddress("wlan0");
Utils.getMACAddress("eth0");
Utils.getIPAddress(true); // IPv4
Utils.getIPAddress(false); // IPv6 

答案 3 :(得分:2)

您想要MAC地址的网络接口是什么?如果没有wifi,你肯定无法获得wifi设备的MAC地址。它代表物理硬件,如果不存在,它根本就不存在。

答案 4 :(得分:0)

使用adb获取Android设备的wifi MAC: adb shell getprop ril.wifi_macaddr

在Java中使用以下代码以编程方式获取它:

Process p = Runtime.getRuntime.exec("adb", "shell", "getprop", "ril.wifi_macaddr")
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream());
String macAddress = br.readLine();