Eri*_*ric 25 android mac-address bluetooth android-6.0-marshmallow
Pre Marshmallow我的应用程序将获得它的设备MAC地址 BluetoothAdapter.getDefaultAdapter().getAddress().
现在有了Marshmallow Android正在回归02:00:00:00:00:00.
我看到一些链接(抱歉不知道现在在哪里)说你需要添加额外的权限
<uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS"/> 
能够得到它.但它对我不起作用.
获取mac地址需要一些额外的权限吗?
我不确定这是否相关,但清单还包括
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
那么有没有办法获得本地蓝牙mac地址?
小智 39
zmarties是正确的,但您仍然可以通过反射或Settings.Secure获取mac地址:
  String macAddress = android.provider.Settings.Secure.getString(context.getContentResolver(), "bluetooth_address");
zma*_*ies 12
有意删除了对mac地址的访问:
为了向用户提供更好的数据保护,从此版本开始,Android会删除使用Wi-Fi和蓝牙API对应用程序的设备本地硬件标识符的编程访问.
(来自Android 6.0的更改)
小智 5
您可以从文件“ / sys / class / net /” + networkInterfaceName +“ / address”访问Mac地址 ,其中networkInterfaceName可以是wlan0或eth1。但是其权限可能是受读保护的,因此在某些设备上可能无法使用。我还要附上我从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 "";
    }
小智 5
首先必须将以下权限添加到清单中;
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS" />
然后,
public static final String SECURE_SETTINGS_BLUETOOTH_ADDRESS = "bluetooth_address";
String macAddress = Settings.Secure.getString(getContentResolver(), SECURE_SETTINGS_BLUETOOTH_ADDRESS);
之后,必须使用 OEM/系统密钥对应用程序进行签名。在 Android 8.1.0 上测试和验证。
事实证明,我最终没有从 Android 获得 MAC 地址。蓝牙设备最终提供 Android 设备 MAC 地址,该地址被存储并在需要时使用。是的,这看起来有点奇怪,但在我参与的项目中,蓝牙设备软件也在开发中,事实证明这是处理这种情况的最佳方法。
| 归档时间: | 
 | 
| 查看次数: | 28497 次 | 
| 最近记录: |