如何在Android Marshmallow中获取Wi-Fi Mac地址

kak*_*ary 16 android

我使用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 次

最近记录:

8 年,12 月 前