Merge "Fix null pointer exception when surveys are turned off" into nyc-mr2-dev
diff --git a/src/com/android/settings/InstrumentedFragment.java b/src/com/android/settings/InstrumentedFragment.java
index 4dedb98..2966800 100644
--- a/src/com/android/settings/InstrumentedFragment.java
+++ b/src/com/android/settings/InstrumentedFragment.java
@@ -77,9 +77,7 @@
public void onPause() {
Activity activity = getActivity();
if (mReceiver != null && activity != null) {
- SurveyFeatureProvider provider =
- FeatureFactory.getFactory(activity).getSurveyFeatureProvider(activity);
- provider.unregisterReceiver(activity, mReceiver);
+ SurveyFeatureProvider.unregisterReceiver(activity, mReceiver);
mReceiver = null;
}
diff --git a/src/com/android/settings/InstrumentedPreferenceFragment.java b/src/com/android/settings/InstrumentedPreferenceFragment.java
index 1b3d5cd..ba6cb79 100644
--- a/src/com/android/settings/InstrumentedPreferenceFragment.java
+++ b/src/com/android/settings/InstrumentedPreferenceFragment.java
@@ -66,9 +66,7 @@
public void onPause() {
Activity activity = getActivity();
if (mReceiver != null && activity != null) {
- SurveyFeatureProvider provider =
- FeatureFactory.getFactory(activity).getSurveyFeatureProvider(activity);
- provider.unregisterReceiver(activity, mReceiver);
+ SurveyFeatureProvider.unregisterReceiver(activity, mReceiver);
mReceiver = null;
}
diff --git a/src/com/android/settings/overlay/SurveyFeatureProvider.java b/src/com/android/settings/overlay/SurveyFeatureProvider.java
index 907bed8..416a602 100644
--- a/src/com/android/settings/overlay/SurveyFeatureProvider.java
+++ b/src/com/android/settings/overlay/SurveyFeatureProvider.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.content.IntentFilter;
import android.support.annotation.Nullable;
+import android.support.v4.content.LocalBroadcastManager;
/**
* An interface for classes wishing to provide the ability to serve surveys to implement.
@@ -81,5 +82,11 @@
* after a call to {@link #createAndRegisterReceiver(Activity)}.
* @param activity The activity that was used to register the BroadcastReceiver.
*/
- void unregisterReceiver(Activity activity, BroadcastReceiver receiver);
+ static void unregisterReceiver(Activity activity, BroadcastReceiver receiver) {
+ if (activity == null) {
+ throw new IllegalStateException("Cannot unregister receiver if activity is null");
+ }
+
+ LocalBroadcastManager.getInstance(activity).unregisterReceiver(receiver);
+ }
}