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

标签 android android-emulator wifimanager

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

WifiManager wifimanager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo winfo = wifimanager.getConnectionInfo();
String MACAddress = winfo.getMACAdress();

但问题是,这段代码只有在wifi打开的情况下才有效,但我的要求是无论wifi是否打开,都可以找到MAC地址。

最佳答案

这是不使用 wifi 管理器获取 Mac 地址的代码。

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 "";

}

某些 Android 设备可能没有可用的 wifi 或正在使用以太网布线。 并根据可用网络调用此方法。

getMACAddress("wlan0"); //using wifi available
getMACAddress("eth0"); //using ethernet connection availale

并且不要忘记设置 list 权限。

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

关于android - 如何通过代码获取android设备(WIFI关闭)的MAC地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14190602/

相关文章:

android - 如何防止 SupportV4 (Fragment)Tabhost 在 TabChange 上创建自己的 Fragment?

Android Studio 虚拟设备卡在 G 屏幕上

java - 在 Android 29 上启用禁用 WiFi

android - String.replace 返回额外的引号

安卓闹钟未设置

java - 将 Dalvik 反编译为 Java,为什么会有这么多不一致?

android - 如何从 FIREBASE 将数据检索到回收站 View

android - 从应用程序发送电子邮件时出现 ActivityNotFoundException

java - 为什么更改 VMOptions 后无法打开 Android Studio