Update context on resume calls for BluetoothAdvertisingEnabler and BluetoothEnabler

The saved context could be invalid if not updated
bug 12991455

Change-Id: I93abb8420d0fa53add1f0e843a5069d59743891c
This commit is contained in:
Matthew Xie
2014-02-14 16:32:32 -08:00
parent b05f1d0081
commit a504c4dcdf
5 changed files with 20 additions and 11 deletions

View File

@@ -732,7 +732,7 @@ public class SettingsActivity extends Activity
mDevelopmentPreferences.registerOnSharedPreferenceChangeListener( mDevelopmentPreferences.registerOnSharedPreferenceChangeListener(
mDevelopmentPreferencesListener); mDevelopmentPreferencesListener);
mHeaderAdapter.resume(); mHeaderAdapter.resume(this);
invalidateHeaders(); invalidateHeaders();
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
@@ -1624,9 +1624,9 @@ public class SettingsActivity extends Activity
holder.mIcon.setImageDrawable(icon); holder.mIcon.setImageDrawable(icon);
} }
public void resume() { public void resume(Context context) {
mWifiEnabler.resume(); mWifiEnabler.resume();
mBluetoothEnabler.resume(); mBluetoothEnabler.resume(context);
} }
public void pause() { public void pause() {

View File

@@ -26,7 +26,7 @@ import com.android.settings.R;
*/ */
final class BluetoothAdvertisingEnabler { final class BluetoothAdvertisingEnabler {
private final Context mContext; private Context mContext;
private final PreferenceScreen mBluetoothAdvertisingPreference; private final PreferenceScreen mBluetoothAdvertisingPreference;
public BluetoothAdvertisingEnabler(Context context, PreferenceScreen bluetoothBroadcast) { public BluetoothAdvertisingEnabler(Context context, PreferenceScreen bluetoothBroadcast) {
@@ -34,7 +34,10 @@ final class BluetoothAdvertisingEnabler {
mBluetoothAdvertisingPreference = bluetoothBroadcast; mBluetoothAdvertisingPreference = bluetoothBroadcast;
} }
public void resume() { public void resume(Context context) {
if (mContext != context) {
mContext = context;
}
boolean isBroadcastingEnable = LocalBluetoothPreferences.isAdvertisingEnabled(mContext); boolean isBroadcastingEnable = LocalBluetoothPreferences.isAdvertisingEnabled(mContext);
handleAdvertisingStateChange(isBroadcastingEnable); handleAdvertisingStateChange(isBroadcastingEnable);
} }

View File

@@ -35,7 +35,7 @@ import com.android.settings.WirelessSettings;
* preference reflects the current state. * preference reflects the current state.
*/ */
public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeListener { public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeListener {
private final Context mContext; private Context mContext;
private Switch mSwitch; private Switch mSwitch;
private boolean mValidListener; private boolean mValidListener;
private final LocalBluetoothAdapter mLocalAdapter; private final LocalBluetoothAdapter mLocalAdapter;
@@ -67,12 +67,16 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis
mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
} }
public void resume() { public void resume(Context context) {
if (mLocalAdapter == null) { if (mLocalAdapter == null) {
mSwitch.setEnabled(false); mSwitch.setEnabled(false);
return; return;
} }
if (mContext != context) {
mContext = context;
}
// Bluetooth state is not sticky, so set it manually // Bluetooth state is not sticky, so set it manually
handleStateChanged(mLocalAdapter.getBluetoothState()); handleStateChanged(mLocalAdapter.getBluetoothState());

View File

@@ -151,7 +151,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
// resume BluetoothEnabler before calling super.onResume() so we don't get // resume BluetoothEnabler before calling super.onResume() so we don't get
// any onDeviceAdded() callbacks before setting up view in updateContent() // any onDeviceAdded() callbacks before setting up view in updateContent()
if (mBluetoothEnabler != null) { if (mBluetoothEnabler != null) {
mBluetoothEnabler.resume(); mBluetoothEnabler.resume(getActivity());
} }
super.onResume(); super.onResume();

View File

@@ -16,6 +16,7 @@
package com.android.settings.bluetooth; package com.android.settings.bluetooth;
import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener; import android.preference.Preference.OnPreferenceClickListener;
@@ -80,9 +81,10 @@ public final class LocalDeviceProfilesSettings extends SettingsPreferenceFragmen
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
mManager.setForegroundActivity(getActivity()); final Activity activity = getActivity();
mAdvertisingEnabler.resume(); mManager.setForegroundActivity(activity);
mDiscoverableEnabler.resume(getActivity()); mAdvertisingEnabler.resume(activity);
mDiscoverableEnabler.resume(activity);
} }
@Override @Override