2010-04-08 19 views
37

ऐसा लगता है एंड्रॉयड की java.net.NetworkInterface कार्यान्वयन एक
बाइट [] getHardwareAddress() विधि http://developer.android.com/reference/java/net/NetworkInterface.htmlवाईफाई नेटवर्क इंटरफ़ेस का मैक पता कैसे प्राप्त करें?

मेरे पास कोई निश्चित जवाब के साथ ऐसा करने की कोशिश कर लोगों के कई मंचों मिल गया है नहीं है, मैं कुछ हद तक एक क्रॉस-उपकरण UUID प्राप्त करने की आवश्यकता है, इसलिए मैं फोन नंबर पर या ANDROID_ID में भरोसा नहीं कर सकते हैं (जो ओवरराइट किया जा सकता है और जो मुझे लगता है कि Google खाते के उपयोगकर्ता पर निर्भर करता है) http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

linux आप कर सकते हैं में ifconfig का उपयोग करें या/proc/net/arp से पढ़ें और आप आसानी से हार्डवेयर पता प्राप्त कर सकते हैं।

क्या एंड्रॉइड में कोई फ़ाइल है जिसे मैं पढ़ सकता हूं?

इस पते को पाने के लिए एक तरीका होना चाहिए क्योंकि यह फ़ोन के "सेटिंग> फ़ोन के बारे में> स्थिति" में दिखाया गया है।

+0

मैं काम कर समाधान https://stackoverflow.com/a/47789324/5330408 ​​ –

उत्तर

22

वहाँ एक रास्ता है, क्योंकि यह में दिखाया जाने वाला "सेटिंग फ़ोन के बारे में> स्थिति>" फोन के इस पता पाने के लिए हो गया है।

जिसका अर्थ है, यदि कुछ और नहीं है, तो आप इसे Google Code Search का उपयोग करके एंड्रॉइड ओपन सोर्स कोड के आसपास पटर जा सकते हैं, यह पता लगाने के लिए कि यह कहां से खींचता है।

खुद को पटरिंग करने के लिए थोड़ा सा करना, ऐसा लगता है कि यह WifiInfo से उपयोग कर रहा है।

+0

कि कोड यहां पाया जा सकता https यहां पोस्ट।com/android/platform_packages_apps_settings/blob/master/src/com/android/सेटिंग्स/wifi/AdvancedWifiSettings.java # L253-L265 – fernandohur

93

देर उत्तर, लेकिन यह अन्य "समस्या" वाले लोगों की सहायता कर सकता है।

answer वास्तव में सीधे आगे है:

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

उपरोक्त कोड, आप अपने डिवाइस के मैक पता मिल जाएगा वाईफ़ाई सक्षम होता है जब पता हथियाने के लिए याद है। यह कोड स्निपेट आपकी गतिविधि में उपयोग किया जाना चाहिए।

+23

बस कुछ विवरण जोड़ने के लिए, आपको इसे AndroidManifest.xml पर उचित अनुमति जोड़नी होगी कार्य: <उपयोग-अनुमति एंड्रॉइड: नाम = "android.permission.ACCESS_WIFI_STATE" /> –

+2

मैक पते प्राप्त करने के लिए वाईफ़ाई सक्षम करने के लिए स्वीकार्य नहीं है। मैं इसे वाईफाई के साथ प्राप्त करता हूं। – jzafrilla

5

अद्यतन:

Android 6.0 शुरू, एपीआई आप सभी उपकरणों के लिए निरंतर मैक पता है, जो 02 है दे देंगे ऊपर: 00: 00: 00: 00: 00। विवरण
http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
के लिए नीचे देखें एक और पोस्ट 6.0 में मैक पता लगाने के लिए दावा है कि, हालांकि
How to get Wi-Fi Mac address in Android Marshmallow

0

जोड़ें के बाद अनुमति नहीं इसका परीक्षण मिले।

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

WifiManager ऑनक्रेट में प्रारंभ होता है।

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

निम्न फ़ंक्शन का उपयोग करें। // GitHub:

public void WI-FI_MAC() { 
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
    String macAddress = wifiInfo.getMacAddress(); 
    } 
संबंधित मुद्दे