重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
最常用的方法,通过WiFiManager获取:
创新互联建站专注于企业全网营销推广、网站重做改版、浦城网站定制设计、自适应品牌网站建设、HTML5建站、成都做商城网站、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为浦城等各大城市提供网站开发制作服务。
/** * 通过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 { //列举 Enumerationen_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及其以下版本都可以获取到。
根据网络接口获取:
/** * 通过网络接口取 * @return */ private static String getNewMac() { try { Listall = 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及其以下版本都可以获取到。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。