最常用的方法,通过WiFiManager获取:
/* * *通过WiFiManager获取mac地址 * @param上下文 * @return */私有静态字符串tryGetWifiMac(上下文语境){ WifiManager wm=(WifiManager) context.getApplicationContext () .getSystemService (Context.WIFI_SERVICE); WifiInfo wi=wm.getConnectionInfo (); 如果(wi==null | | wi.getMacAddress ()==null) { 返回null; } 如果(02:00:00:00:00:00 .equals (wi.getMacAddress () .trim ())) { 返回null; 其他}{ .trim返回wi.getMacAddress () (); } }
这个方法Android 7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00”
根据本地IP获取:
/* * *根据IP地址获取MAC地址 * @return */私有静态字符串getLocalMacAddressFromIp () { 字符串strMacAddr=零; 尝试{//获得IpD地址 InetAddress ip=getLocalInetAddress (); byte [] b=NetworkInterface.getByInetAddress (ip) .getHardwareAddress (); StringBuffer缓冲=new StringBuffer (); for (int i=0;我& lt;b.length;我+ +){ 如果(我!=0){ buffer.append (“:”); } 字符串str=整数。toHexString (b(我),0 xff); buffer.append (str.length ()==1 & # 63;0 + str: str); } .toUpperCase strMacAddr=buffer.toString () (); }捕捉(异常e) { } 返回strMacAddr; }/* * *获取移动设备本地IP * @return */私有静态InetAddress getLocalInetAddress () { InetAddress ip=零; 尝试{//列举 EnumerationAndroid 7.0en_netInterface=NetworkInterface.getNetworkInterfaces (); 而(en_netInterface.hasMoreElements()){//是否还有元素 NetworkInterface倪=(NetworkInterface) en_netInterface.nextElement();//得到下一个元素 Enumeration en_ip=ni.getInetAddresses();//得到一个ip地址的列举 而(en_ip.hasMoreElements ()) { ip=en_ip.nextElement (); 如果(! ip.isLoopbackAddress (),,ip.getHostAddress () .indexOf (“:”)==1) 打破; 其他的 ip=零; } 如果(ip !=null) { 打破; } } }捕捉(SocketException e) { e.printStackTrace (); } 返回的ip; }
这个方法及其以下版本都可以获取到。
根据网络接口获取:
/* * *通过网络接口取 * @return */私有静态字符串getNewMac () { 尝试{ List所有=Collections.list (NetworkInterface.getNetworkInterfaces ()); (NetworkInterface nif:所有){ 如果(! nif.getName () .equalsIgnoreCase (“wlan0”)继续; byte [] macBytes=nif.getHardwareAddress (); 如果(macBytes==null) { 返回null; } StringBuilder res1=new StringBuilder (); (字节b: macBytes) { res1.append(字符串。格式(“% 2 x:”, b)); } 如果(res1.length()在0){ res1.deleteCharAt (res1.length () - 1); } 返回res1.toString (); } }捕捉(例外的前女友){ ex.printStackTrace (); } 返回null; }
注意网络接口的名字有跟多:dummy0, p2p0, wlan0 ....其中wlan0就是我们需要无线mac地址。这个方法Android 7.0及其以下版本都可以获取到。
<强>总结强>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接