Get Bluetooth local mac address in Marshmallow Get Bluetooth local mac address in Marshmallow android android

Get Bluetooth local mac address in Marshmallow


zmarties is right but you can still get the mac address via reflection or Settings.Secure:

  String macAddress = android.provider.Settings.Secure.getString(context.getContentResolver(), "bluetooth_address");


Access to the mac address has been deliberately removed:

To provide users with greater data protection, starting in this release, Android removes programmatic access to the device’s local hardware identifier for apps using the Wi-Fi and Bluetooth APIs.

(from Android 6.0 Changes)


You can access Mac address from the file "/sys/class/net/" + networkInterfaceName+ "/address" ,where networkInterfaceName can be wlan0 or eth1.But Its permission may be read-protected,so it may not work in some devices.I am also attaching the code part which i got from SO.

public static String getWifiMacAddress() {        try {            String interfaceName = "wlan0";            List<NetworkInterface> interfaces = Collections                    .list(NetworkInterface.getNetworkInterfaces());            for (NetworkInterface intf : interfaces) {                if (!intf.getName().equalsIgnoreCase(interfaceName)) {                    continue;                }                byte[] mac = intf.getHardwareAddress();                if (mac == null) {                    return "";                }                StringBuilder buf = new StringBuilder();                for (byte aMac : mac) {                    buf.append(String.format("%02X:", aMac));                }                if (buf.length() > 0) {                    buf.deleteCharAt(buf.length() - 1);                }                return buf.toString();            }        } catch (Exception exp) {            exp.printStackTrace();        }         return "";    }