欢迎来到山村网

Android手机如何获取Mac地址

2019-02-26 09:55:55浏览:484评论:0 来源:山村网   
核心摘要:最常用的方法,通过WiFiManager获取: private static String tryGetWifiMac(Context context) { WifiManager wm = (WifiManager)

最常用的方法,通过WiFiManager获取:

   private static String tryGetWifiMac(Context context) {     WifiManager wm = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);     WifiInfo wi = wm.getConnectionInfo();     if (wi == null || wi.getMacAddress() == null) {       return null;     }     if ("02:00:00:00:00:00".equals(wi.getMacAddress().trim())) {       return null;     } else {       return wi.getMacAddress().trim();     }   } 

这个方法Android 7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00”

根据本地IP获取:

   private static String getLocalMacAddressFromIp() {     String strMacAddr = null;     try {       //获得IpD地址       InetAddress ip = getLocalInetAddress();       byte[] b = NetworkInterface.getByInetAddress(ip).getHardwareAddress();       StringBuffer buffer = new StringBuffer();       for (int i = 0; i < b.length; i++) {         if (i != 0) {           buffer.append(':');         }         String str = Integer.toHexString(b[i] & 0xFF);         buffer.append(str.length() == 1 ? 0 + str : str);       }       strMacAddr = buffer.toString().toUpperCase();     } catch (Exception e) {      }      return strMacAddr;   }     private static InetAddress getLocalInetAddress() {     InetAddress ip = null;     try {       //列举       Enumeration<NetworkInterface> en_netInterface = NetworkInterface.getNetworkInterfaces();       while (en_netInterface.hasMoreElements()) {//是否还有元素         NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();//得到下一个元素         Enumeration<InetAddress> en_ip = ni.getInetAddresses();//得到一个ip地址的列举         while (en_ip.hasMoreElements()) {           ip = en_ip.nextElement();           if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1)             break;           else             ip = null;         }          if (ip != null) {           break;         }       }     } catch (SocketException e) {        e.printStackTrace();     }     return ip;   } 

这个方法Android 7.0及其以下版本都可以获取到。

根据网络接口获取:

 private static String getNewMac() {   try {     List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());     for (NetworkInterface nif : all) {       if (!nif.getName().equalsIgnoreCase("wlan0")) continue;        byte[] macBytes = nif.getHardwareAddress();       if (macBytes == null) {         return null;       }        StringBuilder res1 = new StringBuilder();       for (byte b : macBytes) {         res1.append(String.format("%02X:", b));       }        if (res1.length() > 0) {         res1.deleteCharAt(res1.length() - 1);       }       return res1.toString();     }   } catch (Exception ex) {     ex.printStackTrace();   }   return null; } 

注意网络接口的Name有跟多:dummy0、p2p0、wlan0....其中wlan0就是我们需要WiFi mac地址。这个方法Android 7.0及其以下版本都可以获取到。

(责任编辑:豆豆)
下一篇:

安卓手机如何访问电脑局域网共享的文件

上一篇:

安卓手机怎样省电

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com
 
0相关评论