'Android Bluetooth - Getting NULL for UUID of bluetooth discovered devices

I want to share the data between 2 bluetooth devices without pairing and in both the phones my app will be installed so i used this method (https://arxiv.org/ftp/arxiv/papers/1507/1507.00650.pdf) Bluetooth device advertises a list of services using UUIDs numbers.

This how registered a service=====>

 String uuid = "f2989d52-b3d6-4205-b34d-04f35ea264e5";
 BluetoothAdapter  bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
 BluetoothServerSocket btSocket = bluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord("MYAPP", UUID.fromString(uuid))

Intents for callback===>

    IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    registerReceiver(mReceiver, filter1);
    IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_UUID);
    registerReceiver(mReceiver, filter2);

After that i call

    bluetoothAdapter.startDiscovery();  // to start discovery of devices

Code to handle intents==>

    private  final BroadcastReceiver mReceiver = new
        BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                Log.e("SUNIL","receiver");
                String action = intent.getAction();
                Log.e("SUNIL","receiver action"+action);
                if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    Boolean uuid1 = device.fetchUuidsWithSdp();
                    mDeviceList.add(device);
                    Log.e("SUNIL","device uuid result"+uuid1);
                    Log.e("SUNIL","device"+device.getAddress()+device.getUuids()+device.getBondState());
                } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
                    // discovery has finished, give a call to fetchUuidsWithSdp on first device in list.
                    if (!mDeviceList.isEmpty()) {
                        BluetoothDevice device = mDeviceList.remove(0);
                        boolean result = device.fetchUuidsWithSdp();
                        Log.e("SUNIL", "device uuid result223" + result+"==uuid finished"+device.getUuids());
                    }
                }
                else if (BluetoothDevice.ACTION_UUID.equals(action)) {
                    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    Log.e("SUNIL","device.getUuids()"+device.getUuids());
                    Parcelable[] uuids = intent.getParcelableArrayExtra(BluetoothDevice.EXTRA_UUID);
                    if(uuids != null) {
                        for (Parcelable ep : uuids) {
                            if (uuids != null) {
                                String uuid = ep.toString();
                                Log.e("SUNIL", "uuid===>" + uuid+"===="+device.getName());
                                             **getting uuid null here**
                            }

                        }
                    }
                }
            }
        };

Please help me and i am new to this bluetooth API's I have trued with redmi 6A and redmi 6 PRO devices



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source