如何防止Android蓝牙缓存设备名称?(服务器端)

如何防止Android蓝牙缓存设备名称?(服务器端),android,caching,bluetooth,android-bluetooth,Android,Caching,Bluetooth,Android Bluetooth,我有一个蓝牙服务器插座,可以接受传入的连接。当我调用accept时,会返回一个蓝牙套接字,我使用它通过调用getRemoteDevice获取与服务器连接的设备的信息。这一切正常,但是,当我得到远程设备的名称时,它会显示一个缓存的名称。假设有一个客户端连接到服务器,并且客户端有蓝牙设备名:a。它连接到服务器,服务器将输出设备a已连接。但是,我决定将客户端的蓝牙设备名称更改为B。当我再次连接到服务器时,服务器仍然认为客户端的蓝牙设备名称为:A 我是否需要阻止这种缓存?或者,至少,有没有办法让我获得最

我有一个蓝牙服务器插座,可以接受传入的连接。当我调用accept时,会返回一个蓝牙套接字,我使用它通过调用getRemoteDevice获取与服务器连接的设备的信息。这一切正常,但是,当我得到远程设备的名称时,它会显示一个缓存的名称。假设有一个客户端连接到服务器,并且客户端有蓝牙设备名:a。它连接到服务器,服务器将输出设备a已连接。但是,我决定将客户端的蓝牙设备名称更改为B。当我再次连接到服务器时,服务器仍然认为客户端的蓝牙设备名称为:A

我是否需要阻止这种缓存?或者,至少,有没有办法让我获得最新更新的设备名称

我看到有些人使用fetchuuids和dp。因此,我尝试按如下方式使用它:

private void manageConnectedSocket(BluetoothSocket socket) {
    // Manage the socket returned by BluetoothSeverSocket.accept()
    final BluetoothDevice device = socket.getRemoteDevice();
    // System.out.println("\nAdded: " + device.getName() + " " + device.getAddress());
    device.fetchUuidsWithSdp();
}

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_UUID.equals(action)) {
            // Get the device
            final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            System.out.println("\nAdded: " + device.getName() + " " + device.getAddress());
        }
    }
};
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_UUID);
registerReceiver(mReceiver, filter);
当然,在onCreate中,我已将接收者注册如下:

private void manageConnectedSocket(BluetoothSocket socket) {
    // Manage the socket returned by BluetoothSeverSocket.accept()
    final BluetoothDevice device = socket.getRemoteDevice();
    // System.out.println("\nAdded: " + device.getName() + " " + device.getAddress());
    device.fetchUuidsWithSdp();
}

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_UUID.equals(action)) {
            // Get the device
            final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            System.out.println("\nAdded: " + device.getName() + " " + device.getAddress());
        }
    }
};
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_UUID);
registerReceiver(mReceiver, filter);

这不起作用,仍然会输出缓存的蓝牙设备名称。在客户端发现端,即使没有FetchUUIDSWITHDP,一切都可以正常工作。客户端不会缓存服务器的蓝牙设备名称。有人知道如何从客户端蓝牙设备获取最新的名称吗?由于这一问题,我的项目处于停顿状态。

而不是注册

BluetoothDevice.ACTION\u NAME\u已更改

此操作始终包含额外字段extra\u DEVICE和extra\u NAME