Merge "Crash in Settings observed while changing the device orientation after renamed tablet"
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
index 79dbbbd..f47fecc 100755
--- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -57,7 +57,7 @@
 
     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 @@
         }
     };
 
-    BluetoothDiscoverableEnabler(Context context, LocalBluetoothAdapter adapter,
+    BluetoothDiscoverableEnabler(LocalBluetoothAdapter adapter,
             Preference discoveryPreference) {
-        mContext = context;
         mUiHandler = new Handler();
         mLocalAdapter = adapter;
         mDiscoveryPreference = discoveryPreference;
@@ -105,11 +104,15 @@
         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 14c6054..68cf37a 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -156,7 +156,7 @@
         super.onResume();
 
         if (mDiscoverableEnabler != null) {
-            mDiscoverableEnabler.resume();
+            mDiscoverableEnabler.resume(getActivity());
         }
         getActivity().registerReceiver(mReceiver, mIntentFilter);
         if (mLocalAdapter != null) {
@@ -262,9 +262,9 @@
 
                 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 8d71007..ed27697 100644
--- a/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
+++ b/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
@@ -82,7 +82,7 @@
         super.onResume();
         mManager.setForegroundActivity(getActivity());
         mAdvertisingEnabler.resume();
-        mDiscoverableEnabler.resume();
+        mDiscoverableEnabler.resume(getActivity());
     }
 
     @Override