首页 > 解决方案 > 如何获取我的设备蓝牙 ID。我尝试获取但它们总是返回 02:00:00:00:00:00

问题描述

您好,我尝试获取我的蓝牙设备 ID,但这不起作用。我尝试下面的代码,所以你能检查一下我犯了哪个错误。

public static String getBluetoothMacAddress(Context context) {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    String bluetoothMacAddress = "0";
    try {
        Field mServiceField = bluetoothAdapter.getClass().getDeclaredField("mService");
        mServiceField.setAccessible(true);

        Object btManagerService = mServiceField.get(bluetoothAdapter);

        if (btManagerService != null) {
            bluetoothMacAddress = (String) btManagerService.getClass()
                    .getMethod("getAddress").invoke(btManagerService);

            Utils.printLog("bluetoothMacAddress ", bluetoothMacAddress);
        }
     bluetoothMacAddress=   android.provider.Settings.Secure.getString(context.getContentResolver(), "bluetooth_address");
    } catch (Exception e) {
        Utils.printLog("bluetoothMacAddress1 ", e.getMessage());
    }

    if (bluetoothMacAddress == null || bluetoothMacAddress.equals("") || bluetoothMacAddress.equals("02:00:00:00:00:00")) {
        bluetoothMacAddress = "0";
    }
    Utils.printLog("bluetoothMacAddress ", bluetoothMacAddress);
    return bluetoothMacAddress;
}

标签: androidandroid-bluetoothandroid-service-binding

解决方案


您的 mac 地址实际上是一种 id,但在网络层,因此网络可以识别您的设备。您应该始终为特定设备获取相同的 mac 地址,尽管在制造过程中存在一些例外情况,即多个设备可能具有相同的 mac(如 Arduino 控制器)。但是,这是EXCEPTIONAL,而不是一般


推荐阅读