栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android手机获取Mac地址的方法

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android手机获取Mac地址的方法

最常用的方法,通过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 en_netInterface = NetworkInterface.getNetworkInterfaces(); 
      while (en_netInterface.hasMoreElements()) {//是否还有元素 
 NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();//得到下一个元素 
 Enumeration 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 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及其以下版本都可以获取到。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/158660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号