From 3eb490f903513da26b69cf50398a711829614bff Mon Sep 17 00:00:00 2001 From: Jakub Pawlowski Date: Mon, 18 Jul 2016 09:18:09 -0700 Subject: [PATCH] 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 --- .../bluetooth/BluetoothEventManager.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java index 4bcbea76f134c..a332332131012 100755 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java @@ -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); } }