Update context on resume calls for BluetoothAdvertisingEnabler and BluetoothEnabler

The saved context could be invalid if not updated
bug 12991455

Change-Id: I93abb8420d0fa53add1f0e843a5069d59743891c
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index bbe0e74..511fd7d 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -732,7 +732,7 @@
         mDevelopmentPreferences.registerOnSharedPreferenceChangeListener(
                 mDevelopmentPreferencesListener);
 
-        mHeaderAdapter.resume();
+        mHeaderAdapter.resume(this);
         invalidateHeaders();
 
         registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
@@ -1624,9 +1624,9 @@
             holder.mIcon.setImageDrawable(icon);
         }
 
-        public void resume() {
+        public void resume(Context context) {
             mWifiEnabler.resume();
-            mBluetoothEnabler.resume();
+            mBluetoothEnabler.resume(context);
         }
 
         public void pause() {
diff --git a/src/com/android/settings/bluetooth/BluetoothAdvertisingEnabler.java b/src/com/android/settings/bluetooth/BluetoothAdvertisingEnabler.java
index b9e4ee2..a6b0838 100644
--- a/src/com/android/settings/bluetooth/BluetoothAdvertisingEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothAdvertisingEnabler.java
@@ -26,7 +26,7 @@
  */
 final class BluetoothAdvertisingEnabler {
 
-    private final Context mContext;
+    private Context mContext;
     private final PreferenceScreen mBluetoothAdvertisingPreference;
 
     public BluetoothAdvertisingEnabler(Context context, PreferenceScreen bluetoothBroadcast) {
@@ -34,7 +34,10 @@
         mBluetoothAdvertisingPreference = bluetoothBroadcast;
     }
 
-    public void resume() {
+    public void resume(Context context) {
+        if (mContext != context) {
+            mContext = context;
+        }
         boolean isBroadcastingEnable = LocalBluetoothPreferences.isAdvertisingEnabled(mContext);
         handleAdvertisingStateChange(isBroadcastingEnable);
     }
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index df13eef..1a450d4 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -35,7 +35,7 @@
  * preference reflects the current state.
  */
 public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeListener {
-    private final Context mContext;
+    private Context mContext;
     private Switch mSwitch;
     private boolean mValidListener;
     private final LocalBluetoothAdapter mLocalAdapter;
@@ -67,12 +67,16 @@
         mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
     }
 
-    public void resume() {
+    public void resume(Context context) {
         if (mLocalAdapter == null) {
             mSwitch.setEnabled(false);
             return;
         }
 
+        if (mContext != context) {
+            mContext = context;
+        }
+
         // Bluetooth state is not sticky, so set it manually
         handleStateChanged(mLocalAdapter.getBluetoothState());
 
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 68cf37a..c6b560f 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -151,7 +151,7 @@
         // resume BluetoothEnabler before calling super.onResume() so we don't get
         // any onDeviceAdded() callbacks before setting up view in updateContent()
         if (mBluetoothEnabler != null) {
-            mBluetoothEnabler.resume();
+            mBluetoothEnabler.resume(getActivity());
         }
         super.onResume();
 
diff --git a/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java b/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
index ed27697..47b1476 100644
--- a/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
+++ b/src/com/android/settings/bluetooth/LocalDeviceProfilesSettings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.bluetooth;
 
+import android.app.Activity;
 import android.os.Bundle;
 import android.preference.Preference;
 import android.preference.Preference.OnPreferenceClickListener;
@@ -80,9 +81,10 @@
     @Override
     public void onResume() {
         super.onResume();
-        mManager.setForegroundActivity(getActivity());
-        mAdvertisingEnabler.resume();
-        mDiscoverableEnabler.resume(getActivity());
+        final Activity activity = getActivity();
+        mManager.setForegroundActivity(activity);
+        mAdvertisingEnabler.resume(activity);
+        mDiscoverableEnabler.resume(activity);
     }
 
     @Override