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及其以下版本都可以获取到。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。