为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式获取Android设备的MAC

/ 猿问

以编程方式获取Android设备的MAC

慕容森 2019-12-16 10:04:40

我需要使用Java获取我的android设备的MAC地址。我已经在网上搜索过,但没有发现任何有用的信息。


以编程方式获取Android设备的MAC

查看完整描述

4 回答

?
哈士奇WWW

正如评论中已经指出的那样,可以通过WifiManager接收MAC地址。


WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

WifiInfo info = manager.getConnectionInfo();

String address = info.getMacAddress();

也不要忘记在您的计算机中添加适当的权限 AndroidManifest.xml


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

请参考Android 6.0更改。


为了向用户提供更好的数据保护,从此版本开始,Android删除使用Wi-Fi和Bluetooth API对应用程序对设备本地硬件标识符的编程访问。WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()方法现在返回常数值02:00:00:00:00:00。


要通过蓝牙和Wi-Fi扫描访问附近的外部设备的硬件标识符,您的应用现在必须具有ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限。


查看完整回答
反对 回复 2019-12-16
?
繁花不似锦

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";

}


查看完整回答
反对 回复 2019-12-16
?
守候你守候我

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


public String getMacAddress(Context context) {

    WifiManager wimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

    String macAddress = wimanager.getConnectionInfo().getMacAddress();

    if (macAddress == null) {

        macAddress = "Device don't have mac address or wi-fi is disabled";

    }

    return macAddress;

}


查看完整回答
反对 回复 2019-12-16
?
千万里不及你

我从http://robinhenniges.com/en/android6-get-mac-address-programmatically建立了这个解决方案,它对我有用!希望有帮助!


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) {

                String hex = Integer.toHexString(b & 0xFF);

                if (hex.length() == 1)

                    hex = "0".concat(hex);

                res1.append(hex.concat(":"));

            }


            if (res1.length() > 0) {

                res1.deleteCharAt(res1.length() - 1);

            }

            return res1.toString();

        }

    } catch (Exception ex) {

    }

    return "";

}


查看完整回答
反对 回复 2019-12-16

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信