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