diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java index 79dbbbdd26f..f47feccbe66 100755 --- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java +++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java @@ -57,7 +57,7 @@ final class BluetoothDiscoverableEnabler implements Preference.OnPreferenceClick static final int DEFAULT_DISCOVERABLE_TIMEOUT = DISCOVERABLE_TIMEOUT_TWO_MINUTES; - private final Context mContext; + private Context mContext; private final Handler mUiHandler; private final Preference mDiscoveryPreference; // Preference for visibility time out. Not final as it needs to be set through setter. @@ -91,9 +91,8 @@ final class BluetoothDiscoverableEnabler implements Preference.OnPreferenceClick } }; - BluetoothDiscoverableEnabler(Context context, LocalBluetoothAdapter adapter, + BluetoothDiscoverableEnabler(LocalBluetoothAdapter adapter, Preference discoveryPreference) { - mContext = context; mUiHandler = new Handler(); mLocalAdapter = adapter; mDiscoveryPreference = discoveryPreference; @@ -105,11 +104,15 @@ final class BluetoothDiscoverableEnabler implements Preference.OnPreferenceClick mVisibilityTimeoutPreference = visibilityPreference; } - public void resume() { + public void resume(Context context) { if (mLocalAdapter == null) { return; } + if (mContext != context) { + mContext = context; + } + IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED); mContext.registerReceiver(mReceiver, filter); mDiscoveryPreference.setOnPreferenceClickListener(this); diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java index 14c60541857..68cf37a061d 100755 --- a/src/com/android/settings/bluetooth/BluetoothSettings.java +++ b/src/com/android/settings/bluetooth/BluetoothSettings.java @@ -156,7 +156,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment { super.onResume(); if (mDiscoverableEnabler != null) { - mDiscoverableEnabler.resume(); + mDiscoverableEnabler.resume(getActivity()); } getActivity().registerReceiver(mReceiver, mIntentFilter); if (mLocalAdapter != null) { @@ -262,9 +262,9 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment { if (!isRestrictedAndNotPinProtected()) { if (mDiscoverableEnabler == null) { - mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(), - mLocalAdapter, mMyDevicePreference); - mDiscoverableEnabler.resume(); + mDiscoverableEnabler = new BluetoothDiscoverableEnabler(mLocalAdapter, + mMyDevicePreference); + mDiscoverableEnabler.resume(getActivity()); LocalBluetoothManager.getInstance(getActivity()).setDiscoverableEnabler( mDiscoverableEnabler); } diff --git a/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java b/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java index 8d7100745fc..ed276970de2 100644 --- a/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java +++ b/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java @@ -82,7 +82,7 @@ public final class LocalDeviceProfilesSettings extends SettingsPreferenceFragmen super.onResume(); mManager.setForegroundActivity(getActivity()); mAdvertisingEnabler.resume(); - mDiscoverableEnabler.resume(); + mDiscoverableEnabler.resume(getActivity()); } @Override