最常用的方法,通过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=零; 尝试{//列举 Enumerationen_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; } >之前 Android 7.0 这个方法及其以下版本都可以获取到。
根据网络接口获取:
/* * *通过网络接口取 * @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及其以下版本都可以获取到。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
安卓手机获取Mac地址的方法