Android手机获取Mac地址的几种方法
最常用的方法,通过WiFiManager获取:
/** *通过WiFiManager获取mac地址 *@paramcontext *@return */ privatestaticStringtryGetWifiMac(Contextcontext){ WifiManagerwm=(WifiManager)context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfowi=wm.getConnectionInfo(); if(wi==null||wi.getMacAddress()==null){ returnnull; } if("02:00:00:00:00:00".equals(wi.getMacAddress().trim())){ returnnull; }else{ returnwi.getMacAddress().trim(); } }
这个方法Android7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00”
根据本地IP获取:
/** *根据IP地址获取MAC地址 *@return */ privatestaticStringgetLocalMacAddressFromIp(){ StringstrMacAddr=null; try{ //获得IpD地址 InetAddressip=getLocalInetAddress(); byte[]b=NetworkInterface.getByInetAddress(ip).getHardwareAddress(); StringBufferbuffer=newStringBuffer(); for(inti=0;ien_netInterface=NetworkInterface.getNetworkInterfaces(); while(en_netInterface.hasMoreElements()){//是否还有元素 NetworkInterfaceni=(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(SocketExceptione){ e.printStackTrace(); } returnip; }
这个方法Android7.0及其以下版本都可以获取到。
根据网络接口获取:
/** *通过网络接口取 *@return */ privatestaticStringgetNewMac(){ try{ Listall=Collections.list(NetworkInterface.getNetworkInterfaces()); for(NetworkInterfacenif:all){ if(!nif.getName().equalsIgnoreCase("wlan0"))continue; byte[]macBytes=nif.getHardwareAddress(); if(macBytes==null){ returnnull; } StringBuilderres1=newStringBuilder(); for(byteb:macBytes){ res1.append(String.format("%02X:",b)); } if(res1.length()>0){ res1.deleteCharAt(res1.length()-1); } returnres1.toString(); } }catch(Exceptionex){ ex.printStackTrace(); } returnnull; }
注意网络接口的Name有跟多:dummy0、p2p0、wlan0....其中wlan0就是我们需要WiFimac地址。这个方法Android7.0及其以下版本都可以获取到。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接