如何通过代码获取Android设备的MAC地址(WIFI已关闭)?

2 android android-emulator wifimanager

我需要设计一个应该显示设备MAC地址的Android应用程序..我已经完成了以下编码..

WifiManager wifimanager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo winfo = wifimanager.getConnectionInfo();
String MACAddress = winfo.getMACAdress();
Run Code Online (Sandbox Code Playgroud)

但问题是,此代码仅在打开wifi时才起作用,但我的要求是找到无论wifi是否打开的MAC地址.

Nir*_*iya 7

这是getMac地址的代码,不使用wifi管理器.

public static String getMACAddress(String interfaceName) {
    try {
        List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
        for (NetworkInterface intf : interfaces) {
            if (interfaceName != null) {
                if (!intf.getName().equalsIgnoreCase(interfaceName)) continue;
            }
            byte[] mac = intf.getHardwareAddress();
            if (mac==null) return "";
            StringBuilder buf = new StringBuilder();
            for (int idx=0; idx<mac.length; idx++)
                buf.append(String.format("%02X:", mac[idx]));       
            if (buf.length()>0) buf.deleteCharAt(buf.length()-1);
            return buf.toString();
        }
    } catch (Exception ex) { } 
    return "";

}
Run Code Online (Sandbox Code Playgroud)

一些Android设备可能没有可用的wifi或使用以太网接线.并根据网络可用调用此方法.

getMACAddress("wlan0"); //using wifi available
getMACAddress("eth0"); //using ethernet connection availale
Run Code Online (Sandbox Code Playgroud)

并且不要忘记设置清单权限.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)