2010-04-08 132 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(); 
    } 
相關問題