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及其以下版本都可以获取到。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接