美文网首页
2018-01-23 安卓获取mac地址

2018-01-23 安卓获取mac地址

作者: 自傷無色 | 来源:发表于2018-01-23 18:30 被阅读1646次

在网上搜索过了很多的获取手机的mac地址方法 今天在这里整理一下学习到的方法~

通过wifimanager获取mac地址

这个是官方的获取方法 代码如下

   WifiManager mgrWifi = 
   (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
   if(null == mgrWifi)return "";
   WifiInfo info = mgrWifi.getConnectionInfo();
   if(null == info)return "";
   String sMac = info.getMacAddress();
   if(null == sMac)return "";
   return sMac;

这个方法在安卓6.0之后便只能获取到02:00:00:00:00,官方解释说为了保护用户隐私,所以这个现在应该被弃用了吧(话说被弃用了居然还写出来,真的是恶心)

通过NetworkInterface后去mac地址

通过网络接口获取mac地址,这种方法取代了之前的WiFimanager的方法,可以做6.0版本之后同样适用,只不过需要添加权限,另外还需要开启wifi才可以获取到mac地址(不过有些手机在wifi关闭后就获取不到mac地址了,例如华为) 在网络接口中找到wlan0,它对应的地址及为mac地址。(这里另外还有好多其他的,这里打印一个日志可以看到)
这里有一个大佬写的解释 简书:获取android手机mac地址
关闭时的日志

01-23 18:13:25.402 29573-29573/com.example.administrator.mytestapplication D/TEST_BUG: interfaceName=dummy0, mac=42:38:D5:B2:4A:FE

开启时的日志

01-23 18:14:04.146 29573-29573/com.example.administrator.mytestapplication D/TEST_BUG: interfaceName=p2p0, mac=7A:62:56:14:09:07
01-23 18:14:04.150 29573-29573/com.example.administrator.mytestapplication D/TEST_BUG: interfaceName=dummy0, mac=42:38:D5:B2:4A:FE
01-23 18:14:04.155 29573-29573/com.example.administrator.mytestapplication D/TEST_BUG: interfaceName=wlan0, mac=78:62:56:14:09:07

下面就是代码部分

   String macAddress = null;
   StringBuffer buf = new StringBuffer();
   NetworkInterface networkInterface = null;
   try {
       networkInterface = NetworkInterface.getByName("eth1");
       if (networkInterface == null) {
           networkInterface = NetworkInterface.getByName("wlan0");
       }
       if (networkInterface == null) {
           return "02:00:00:00:00:00";
       }
       byte[] addr = networkInterface.getHardwareAddress();
       for (byte b : addr) {
           buf.append(String.format("%02X:", b));
       }
       if (buf.length() > 0) {
           buf.deleteCharAt(buf.length() - 1);
       }
       macAddress = buf.toString();
   } catch (SocketException e) {
       e.printStackTrace();
       return "02:00:00:00:00:00";
   }
   return macAddress;

需要以下权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

暂时写这么多 找到了其他的发现都没什么用 到时候再补上来

相关文章

网友评论

      本文标题:2018-01-23 安卓获取mac地址

      本文链接:https://www.haomeiwen.com/subject/fvcsaxtx.html