diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java index 77a946291af..12637974bfc 100755 --- a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java +++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java @@ -149,7 +149,6 @@ final class CachedBluetoothDevice implements Comparable { } if (profile instanceof MapProfile) { profile.setPreferred(mDevice, true); - refresh(); } } else if (profile instanceof MapProfile && newProfileState == BluetoothProfile.STATE_DISCONNECTED) { @@ -158,7 +157,6 @@ final class CachedBluetoothDevice implements Comparable { mProfiles.remove(profile); } profile.setPreferred(mDevice, false); - refresh(); } else if (mLocalNapRoleConnected && profile instanceof PanProfile && ((PanProfile) profile).isLocalRoleNap(mDevice) && newProfileState == BluetoothProfile.STATE_DISCONNECTED) { @@ -489,7 +487,8 @@ final class CachedBluetoothDevice implements Comparable { ParcelUuid[] localUuids = mLocalAdapter.getUuids(); if (localUuids == null) return false; - mProfileManager.updateProfiles(uuids, localUuids, mProfiles, mRemovedProfiles, mLocalNapRoleConnected); + mProfileManager.updateProfiles(uuids, localUuids, mProfiles, mRemovedProfiles, + mLocalNapRoleConnected, mDevice); if (DEBUG) { Log.e(TAG, "updating profiles for " + mDevice.getAliasName()); diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java index 78d64414360..8fff964878d 100644 --- a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java +++ b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java @@ -321,7 +321,7 @@ final class LocalBluetoothProfileManager { synchronized void updateProfiles(ParcelUuid[] uuids, ParcelUuid[] localUuids, Collection profiles, Collection removedProfiles, - boolean isPanNapConnected) { + boolean isPanNapConnected, BluetoothDevice device) { // Copy previous profile list into removedProfiles removedProfiles.clear(); removedProfiles.addAll(profiles); @@ -367,6 +367,13 @@ final class LocalBluetoothProfileManager { profiles.add(mPanProfile); removedProfiles.remove(mPanProfile); } + + if ((mMapProfile != null) && + (mMapProfile.getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED)) { + profiles.add(mMapProfile); + removedProfiles.remove(mMapProfile); + mMapProfile.setPreferred(device, true); + } } }