最常用的方法,通过WiFiManager获取:
/** * 通过WiFiManager获取mac地址 * @param context * @return */ 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获取:
/** * 根据IP地址获取MAC地址 * @return */ 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; } /** * 获取移动设备本地IP * @return */ 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及其以下版本都可以获取到。
根据网络接口获取:
/** * 通过网络接口取 * @return */ 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及其以下版本都可以获取到。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接
本文向大家介绍Android手机获取Mac地址的方法,包括了Android手机获取Mac地址的方法的使用技巧和注意事项,需要的朋友参考一下 最常用的方法,通过WiFiManager获取: 这个方法Android 7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00” 根据本地IP获取: 这个方法Android 7.0及其以下版本都可以获取到。 根据网络接口获取: 注
本文向大家介绍iOS如何获取手机的Mac地址,包括了iOS如何获取手机的Mac地址的使用技巧和注意事项,需要的朋友参考一下 首先说明下,下面两种方法均可以获得手机的mac地址,但是有个限制,是在iOS7以下才可以获得。iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回的都是02:00:00:00:00:00。 官方文档上这样写的: "Twolow-level network
本文向大家介绍android 获取本机的IP地址和mac物理地址的实现方法,包括了android 获取本机的IP地址和mac物理地址的实现方法的使用技巧和注意事项,需要的朋友参考一下 获取本机IP地址 获取本机的物理地址 以上就是Android 获取手机 IP和MAC地址的方法,希望能帮助到读者,谢谢大家对本站的支持!
本文向大家介绍C++获取本机MAC,IP,MASK地址的方法,包括了C++获取本机MAC,IP,MASK地址的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++获取本机MAC,IP,MASK地址的方法,分享给大家供大家参考。具体方法如下: 希望本文所述对大家的C++程序设计有所帮助。
问题内容: 我需要一种跨平台的方法来在运行时确定计算机的MAC地址。对于Windows,可以使用“ wmi”模块,在Linux下,我能找到的唯一方法是运行ifconfig并在其输出中运行正则表达式。我不喜欢使用只能在一个OS上运行的程序包,而且更不用说容易出错的语法解析另一个程序的输出。 有谁知道跨平台方法(Windows和Linux)方法来获取MAC地址?如果没有,还有谁比我上面列出的方法更优雅
我想要得到机器的MAC地址..但下面写的代码只显示MAC地址时,互联网连接到我的机器,否则它将返回空...我用的是Windows7