2010-04-08 130 views
37

看来机器人的java.net.NetworkInterface执行不具有
的byte [] getHardwareAddress()方法 http://developer.android.com/reference/java/net/NetworkInterface.html如何获取WiFi网络接口的MAC地址?

我发现人们试图用没有明确的答案做这几个论坛,我需要得到一个有点跨设备的UUID,所以我不能依靠电话号码或ANDROID_ID(可覆盖,我认为这取决于有一个谷歌帐户的用户) http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

在Linux可以使用ifconfig或从/ proc/net/arp读取,您可以轻松获取硬件地址。

在android中有一个文件可以阅读吗?

因为手机的“设置>关于手机>状态”中显示了该地址,所以必须有一种方法。

+0

我张贴在这里工作的解决方案 https://stackoverflow.com/a/47789324/5330408 – 2017-12-13 10:32:09

回答

22

必须有一种方式来获得这种 地址,因为它在 显示真实“设置>关于手机>状态”的 电话。

这意味着,如果没有别的东西,你可以绕过Android开源代码,也许使用谷歌代码搜索,找出它从哪里来。

做了一些自己的鞭打,它会出现它使用getMacAddress()WifiInfo

+0

该代码可以在这里找到 https://开头github上。com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/wifi/AdvancedWifiSettings.java#L253-L265 – fernandohur 2013-12-11 15:43:23

93

迟到的答案,但它可以帮助其他人有相同的“问题”。

answer真的是直截了当:

WifiManager wifiMan = (WifiManager) this.getSystemService(
       Context.WIFI_SERVICE); 
WifiInfo wifiInf = wifiMan.getConnectionInfo(); 
String macAddr = wifiInf.getMacAddress(); 

上面的代码将让你的设备的MAC地址,记得有抓住地址时,带WiFi功能。这段代码应该在你的Activity中使用。

+23

只需添加一些细节,您将不得不添加一个适当的权限给androidManifest.xml以获取它工作:<使用权限android:name =“android.permission.ACCESS_WIFI_STATE”/> – 2011-02-27 13:15:16

+2

不需要有wifi启用获得MAC地址。我把它与无线网关关联。 – jzafrilla 2013-09-19 11:31:16

0

添加以下权限。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

WifiManager在onCreate中初始化。

WifiManager wifiMgr = (WifiManager) getContext().getSystemService(context.WIFI_SERVICE); 

使用以下功能。

public void WI-FI_MAC() { 
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
    String macAddress = wifiInfo.getMacAddress(); 
    } 
相关问题