diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index a1f9a9b451c82..afb4c07563b79 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -641,6 +641,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (appCount == 0 && mEnable) { disableBleScanMode(); } + if (appCount == 0 && !mEnableExternal) { + sendBrEdrDownCallback(); + } return appCount; } @@ -696,7 +699,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub { return; } - if (isBleAppPresent() == false) { + if (isBleAppPresent()) { + // Need to stay at BLE ON. Disconnect all Gatt connections + try { + mBluetoothGatt.unregAll(); + } catch (RemoteException e) { + Slog.e(TAG, "Unable to disconnect all apps.", e); + } + } else { try { mBluetoothLock.readLock().lock(); if (mBluetooth != null) mBluetooth.onBrEdrDown(); @@ -705,14 +715,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } finally { mBluetoothLock.readLock().unlock(); } - } else { - // Need to stay at BLE ON. Disconnect all Gatt connections - try { - mBluetoothGatt.unregAll(); - } catch (RemoteException e) { - Slog.e(TAG, "Unable to disconnect all apps.", e); - } } + } public boolean enableNoAutoConnect(String packageName)