我使用WiFi MAC地址作为唯一ID,从Marshmallow开始返回虚假MAC地址(出于安全原因).有了这个,我的Android应用程序表现不同.如何获取Android设备的实际MAC地址.
我使用以下代码片段.
WifiManager wmgr = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String wifiId = wmgr.getConnectionInfo().getMacAddress();
Run Code Online (Sandbox Code Playgroud)
以下权限在Manifest文件中添加.
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)
Rob*_*son 51
有一种解决方法可以在Android 6.0中获取Mac地址.
首先,您需要添加Internet用户权限.
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过NetworkInterfaces API找到mac.
public static String getMacAddr() {
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (!nif.getName().equalsIgnoreCase("wlan0")) continue;
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null) {
return "";
}
StringBuilder res1 = new StringBuilder();
for (byte b : macBytes) {
res1.append(String.format("%02X:",b));
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() - 1);
}
return res1.toString();
}
} catch (Exception ex) {
}
return "02:00:00:00:00:00";
}
Run Code Online (Sandbox Code Playgroud)
来源:http://robinhenniges.com/en/android6-get-mac-address-programmatically
| 归档时间: |
|
| 查看次数: |
21572 次 |
| 最近记录: |