Android wifiMac地址显示异常坑 | 您所在的位置:网站首页 › wifi设备mac › Android wifiMac地址显示异常坑 |
1、由于最近项目上线,之前一直使用Android 10 都是通过WifiInfo获取mac地址 如下所示 /** * Return dynamic information about the current Wi-Fi connection, if any is active. ** In the connected state, access to the SSID and BSSID requires * the same permissions as {@link #getScanResults}. If such access is not allowed, * {@link WifiInfo#getSSID} will return {@code ""} and * {@link WifiInfo#getBSSID} will return {@code "02:00:00:00:00:00"}. * * @return the Wi-Fi information, contained in {@link WifiInfo}. */ public WifiInfo getConnectionInfo() { try { return mService.getConnectionInfo(mContext.getOpPackageName()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } 2、一般默认wifi地址都是020000000000这种格式 /** * Record the MAC address of the WLAN interface * @param macAddress the MAC address in {@code XX:XX:XX:XX:XX:XX} form * @hide */ @UnsupportedAppUsage public void setMacAddress(String macAddress) { this.mMacAddress = macAddress; } public String getMacAddress() { return mMacAddress; }3、然后于是我到网上搜索 // Android 6.0以上获取WiFi的Mac地址 //由于android6.0对wifi mac地址获取进行了限制,用原来的方法获取会获取到02:00:00:00:00:00这个固定地址。 //但是可以通过读取节点进行获取"/sys/class/net/wlan0/address" 4、于是我尝试获取 5、网上某书上面的代码如下 于是尝试一波还是没用? 6、在这里解析下AndroidQ之后分为两种mac地址 设备wifiMac与随机Mac 看了这我内心是慌的一P,这条路又走不通了? 7、于是再去百度搜索,在 Android Q 中需要获取 Wifi MAC Address,使用 wifiInfo.getMacAddress() 接口,发现获取到的值为 02:00:00:00:00:00,与真实值对不上。也不行哈,代码大概如下: WifiManager mWifiManager = (WifiManager) getActivity().getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); String macAddress = wifiInfo.getMacAddress(); 8、于是去硬着头皮去看源码,此处省略几个小时。。。。。。。请自行脑补哈 9、最后在WifiManager里面找到一个updateConnectivity方法于是开始尝试 10、好像这个是系统Systetem Api,那我们应用层该怎么拿呢?要不通过修改framework WifiManager源码 仿照这种写法 然后重新编译源码,另外系统权限因为我们设备已经root过,于是我想到由于项目里面targetsdk还是29 但是我们的平板设备是Android 12(S)SDK版本31 如下 11、这时候脑袋里面又有另外一种想法,framework目前还不是很熟,用反射尝试下?于是写了下面这种代码, 想起来以前大学Java老师说的,反射天下无敌,开始尝试通过反射getFactoryMacAddresses拿,就是如果当前sdk版本大于28 Android 9 反射获取 否则还是通过wifiinfo.connectionInfo.macAddress获取。下面正常显示wifi设备mac地址 唯一标识,到这里基本就是结束了。 转载请注明出处谢谢 Android wifiMac地址显示异常坑_KdanMin的博客-CSDN博客_android10 mac地址 |
CopyRight 2018-2019 实验室设备网 版权所有 |