zoukankan      html  css  js  c++  java
  • 在安卓6.0(及以上)设备上无法获取无线网卡MAC地址的解决方案

    在安卓6.0以下的设备上,通过WifiManager.getConnectionInfo().getMacAddress()即可获取WLAN物理地址,

    而在6.0及以上,以此方式获取到的MAC地址为固定值02:00:00:00:00:00,而非真实值

    解决方案

    WlanMacAddressGetter.java

    package com.example.buyishi.myapplication;
    
    import android.util.Log;
    
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.util.Enumeration;
    
    public class WlanMacAddressGetter {
        private static final String TAG = WlanMacAddressGetter.class.getName();
    
        public static String getWlanMacAddress() {
            try {
                Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
                while (networkInterfaces.hasMoreElements()) {
                    NetworkInterface networkInterface = networkInterfaces.nextElement();
                    if (networkInterface.getName().equals("wlan0")) {
                        StringBuilder mac = new StringBuilder();
                        byte[] hardwareAddress = networkInterface.getHardwareAddress();
                        String hex = Integer.toHexString(hardwareAddress[0] & 0xff);
                        if (hex.length() == 1) {
                            mac.append('0');
                        }
                        mac.append(hex);
                        for (int i = 1; i < hardwareAddress.length; ++i) {
                            mac.append(':');
                            hex = Integer.toHexString(hardwareAddress[i] & 0xff);
                            if (hex.length() == 1) {
                                mac.append('0');
                            }
                            mac.append(hex);
                        }
                        return mac.toString();
                    }
                }
            } catch (SocketException ex) {
                Log.e(TAG, null, ex);
            }
            return null;
        }
    }

    注意:须声明权限android.permission.INTERNET,否则在获取MAC时会引发SocketException

  • 相关阅读:
    context:component-scan报错
    goland 实用键
    React-Native 指定模拟器RUN-IOS
    mac 卸载编辑器卸不干净
    go 区分指针
    go 学习Printf
    我的命令行
    mysql8的坑
    小三角
    eslint 禁用命令
  • 原文地址:https://www.cnblogs.com/buyishi/p/10049196.html
Copyright © 2011-2022 走看看