由于android6.0对wifi mac地址获取进行了限制,用原来的方法获取会获取到02:00:00:00:00:00这个固定地址。
但是可以通过读取节点进行获取"/sys/class/net/wlan0/address"
在6.0以前的获取WiFi的Mac地址
// Android 6.0之前的版本可以用的方法(模拟器可以使用) public String getLocalMacAddress() { WifiManager wifi = (WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE); // WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); }
Android6.0及其以上使用一下代码
// Android 6.0以上获取WiFi的Mac地址 //由于android6.0对wifi mac地址获取进行了限制,用原来的方法获取会获取到02:00:00:00:00:00这个固定地址。 //但是可以通过读取节点进行获取"/sys/class/net/wlan0/address" public static String getMacAddr() { try { return loadFileAsString("/sys/class/net/wlan0/address") .toUpperCase().substring(0, 17); } catch (IOException e) { e.printStackTrace(); return ""; } } private static String loadFileAsString(String filePath) throws java.io.IOException { StringBuffer fileData = new StringBuffer(1000); BufferedReader reader = new BufferedReader(new FileReader(filePath)); char[] buf = new char[1024]; int numRead = 0; while ((numRead = reader.read(buf)) != -1) { String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); } reader.close(); return fileData.toString(); }
- 下面的代码可以获取当当前设备连接到的网络的wifi信息
- WifiManager mWifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
- if (mWifi.isWifiEnabled()) {
- WifiInfo wifiInfo = mWifi.getConnectionInfo();
- String netName = wifiInfo.getSSID(); //获取被连接网络的名称
- String netMac = wifiInfo.getBSSID(); //获取被连接网络的mac地址
- String localMac = wifiInfo.getMacAddress();// 获得本机的MAC地址
- }
在连接上WiFi情况下,亲测通过,如下图所示:
源码下载地址:
点击打开链接