Show name for incoming pairing requests.
Settings apps invalidates its cache whenever a new scan is started.
When there is a new incoming pairing request, we will not get a DeviceFound
signal, because its not due to a inquiry scan. Thus when the pairing request
is displayed, the settings app doesn't have it in cache and hence will
just display the address. Make it query the framework when it doesn't have the name.
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
index 7052bfb..046cd76 100644
--- a/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
@@ -140,7 +140,12 @@
*/
public String getName(BluetoothDevice device) {
CachedBluetoothDevice cachedDevice = findDevice(device);
- return cachedDevice != null ? cachedDevice.getName() : device.getAddress();
+ if (cachedDevice != null) return cachedDevice.getName();
+
+ String name = device.getName();
+ if (name != null) return name;
+
+ return device.getAddress();
}
private void dispatchDeviceAdded(CachedBluetoothDevice cachedDevice) {
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothManager.java b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
index 501f767..7037582 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
@@ -256,7 +256,10 @@
CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(device);
String name = null;
if (cachedDevice == null) {
- name = mContext.getString(R.string.bluetooth_remote_device);
+ name = device.getName();
+ if (name == null) {
+ name = mContext.getString(R.string.bluetooth_remote_device);
+ }
} else {
name = cachedDevice.getName();
}