2010-04-08 76 views
37

Có vẻ như việc thực hiện java.net.NetworkInterface của Android không có một phương pháp
byte [] getHardwareAddress() http://developer.android.com/reference/java/net/NetworkInterface.htmlCách lấy địa chỉ MAC của giao diện mạng WiFi?

Tôi đã tìm thấy một số diễn đàn của những người cố gắng để làm điều này không có câu trả lời dứt khoát, tôi cần phải có UUID hơi chéo thiết bị, vì vậy tôi không thể dựa vào số điện thoại hoặc trong ANDROID_ID (có thể bị ghi đè và tôi nghĩ phụ thuộc vào người dùng có tài khoản google) http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

Trong linux bạn có thể sử dụng ifconfig hoặc đọc từ/proc/net/arp và bạn có thể dễ dàng lấy địa chỉ Hardware.

Có tệp nào trong Android mà tôi có thể đọc không?

Phải có cách để nhận địa chỉ này vì nó được hiển thị trong "Cài đặt> Giới thiệu về điện thoại> Trạng thái" của điện thoại.

+0

tôi được đăng ở đây giải pháp https://stackoverflow.com/a/47789324/5330408 ​​ –

Trả lời

22

Cần phải có một cách để có được địa chỉ này kể từ khi nó được hiển thị trong "Cài đặt> Giới thiệu về điện thoại> Trạng thái" của điện thoại.

Có nghĩa là, nếu không có gì khác, bạn có thể chuyển xung quanh mã nguồn mở Android, có thể sử dụng Tìm kiếm mã của Google, để tìm ra nơi nó lấy từ đó.

Làm một chút tự xao lãng, có vẻ như nó đang sử dụng getMacAddress() từ WifiInfo.

+0

Đó là mã có thể được tìm thấy ở đây https làm việc: // github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/wifi/AdvancedWifiSettings.java # L253-L265 – fernandohur

93

Câu trả lời muộn nhưng có thể giúp người khác có cùng "sự cố".

Các answer thực sự thẳng về phía trước:

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

Đoạn mã trên sẽ giúp bạn có được địa chỉ MAC của thiết bị của bạn, hãy nhớ có wifi kích hoạt khi grabbing địa chỉ. Đoạn mã này nên được sử dụng trong Hoạt động của bạn.

+23

chỉ để thêm một số chi tiết, bạn sẽ phải thêm quyền thích hợp vào androidManifest.xml để chuyển nó sang công việc:

+2

Không cần thiết phải bật wifi để nhận địa chỉ MAC. Tôi nhận được nó với wifi tắt. – jzafrilla

0

Add Sau Permission.

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

WifiManager initialize on onTạo.

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

Sử dụng chức năng sau.

public void WI-FI_MAC() { 
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
    String macAddress = wifiInfo.getMacAddress(); 
    } 
Các vấn đề liên quan