Android获取Ethernet、WIFI的ip和mac地址
/***获取本地ip*@return*/privateStringgetLocalIpAddress(){try{Stringipv4=null;List<NetworkInterface>nilist=Collections.list(NetworkInterface.getNetworkInterfaces());for(NetworkInterfaceni:nilist){List<InetAddress>ialist=Collections.list(ni.getInetAddresses());for(InetAddressaddress:ialist){ipv4=address.getHostAddress();if(!address.isLoopbackAddress()&&InetAddressUtils.isIPv4Address(ipv4)){returnipv4;}}}}catch(SocketExceptionex){}return"0.0.0.0";}
通过IP获取MAC地址
/***通过本地ip获取mac地址*@return*/@SuppressWarnings("finally")privateStringgetLocalMacAddressFromIp(){Stringmac_s="";try{byte[]mac;Stringip=getLocalIpAddress();if(!InetAddressUtils.isIPv4Address(ip)){returnmac_s;}InetAddressipAddress=InetAddress.getByName(ip);if(ipAddress==null){returnmac_s;}NetworkInterfacene=NetworkInterface.getByInetAddress(ipAddress);mac=ne.getHardwareAddress();if(mac.length>0){mac_s=byte2mac(mac);}}catch(Exceptione){e.printStackTrace();}finally{returnmac_s;}}privateStringbyte2mac(byte[]b){StringBufferhs=newStringBuffer(b.length);Stringstmp="";intlen=b.length;for(intn=0;n<len;n++){stmp=Integer.toHexString(b[n]&0xFF);if(stmp.length()==1){hs=hs.append("0").append(stmp);}else{hs=hs.append(stmp);}}StringBufferstr=newStringBuffer(hs);for(inti=0;i<str.length();i++){if(i%3==0){str.insert(i,':');}}returnstr.toString().substring(1);}
因为是通过ip获取的mac地址,所以当是wifi连接时的ip获取到的则是WIFI的mac,如果是Ethernet连接时则获取的是Ethernet的mac地址
下面的方法则是直接获取Ethernet的mac
/***获取Ethernet的MAC地址*@return*/privateStringgetMacAddress(){try{returnloadFileAsString("/sys/class/net/eth0/address").toUpperCase(Locale.ENGLISH).substring(0,17);}catch(IOExceptione){returnnull;}}privateStringloadFileAsString(StringfilePath)throwsjava.io.IOException{StringBufferfileData=newStringBuffer(1000);BufferedReaderreader=newBufferedReader(newFileReader(filePath));char[]buf=newchar[1024];intnumRead=0;while((numRead=reader.read(buf))!=-1){StringreadData=String.valueOf(buf,0,numRead);fileData.append(readData);}reader.close();returnfileData.toString();}
还有一种更简单的方式获取Ethernet的mac
/***获取Ethernet的MAC地址*@return*/privateStringgetMacAddress(){EthernetManagerethManager=(EthernetManager)MainActivity.this.getSystemService("ethernet");returnethManager.getMacAddr()==null?"":ethManager.getMacAddr();}
获取wifi的mac地址
/***获取wifimac*@return*/privateStringgetWifiMac(){WifiManagerwifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);WifiInfoinfo=wifi.getConnectionInfo();returninfo.getMacAddress()==null?"":info.getMacAddress();}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。