Fix Bluetooth OOB pairing not working for unseen devices

When Out Of Band info is provided, first time we learn about
device is when it's state is changed to "Bonding". This currently cause
this event to be discarded and pairing fails. Instead, we should add
CachedDevice object for newly added device.

Bug: 30188629
Change-Id: I4046bfe30e8bf32b888f608ac06d5041e2999dc9
(cherry picked from commit 3eb490f903)
This commit is contained in:
Jakub Pawlowski
2016-07-18 09:18:09 -07:00
parent 8fcff25c4f
commit 2d0ebcf3a0

View File

@@ -268,16 +268,16 @@ public final class BluetoothEventManager {
if (cachedDevice == null) {
Log.w(TAG, "CachedBluetoothDevice for device " + device +
" not found, calling readPairedDevices().");
if (!readPairedDevices()) {
Log.e(TAG, "Got bonding state changed for " + device +
", but we have no record of that device.");
return;
if (readPairedDevices()) {
cachedDevice = mDeviceManager.findDevice(device);
}
cachedDevice = mDeviceManager.findDevice(device);
if (cachedDevice == null) {
Log.e(TAG, "Got bonding state changed for " + device +
", but device not added in cache.");
return;
Log.w(TAG, "Got bonding state changed for " + device +
", but we have no record of that device.");
cachedDevice = mDeviceManager.addDevice(mLocalAdapter, mProfileManager, device);
dispatchDeviceAdded(cachedDevice);
}
}