如何获取没有Wifi接口的android设备的网络接口的MAC地址(例如android模拟器)?通过WifiManager获得的WifiInfo返回 null 。
修改
更清楚:我必须在本地网络上与现有的网络协议(不是由我设计)进行通信,我必须在注册阶段发送有效负载内通信接口的mac地址。
答案 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();