Merge "[Settings] Avoid NPE when user enter WifiCallingSettings back and forth" into udc-d1-dev
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index 0c3d769..3890ddf 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -94,7 +94,6 @@
private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
private Preference mUpdateAddress;
- private boolean mValidListener = false;
private boolean mEditableWfcMode = true;
private boolean mEditableWfcRoamingMode = true;
private boolean mUseWfcHomeModeForRoaming = false;
@@ -104,7 +103,7 @@
private ProvisioningManager mProvisioningManager;
private TelephonyManager mTelephonyManager;
- private final PhoneTelephonyCallback mTelephonyCallback = new PhoneTelephonyCallback();
+ private PhoneTelephonyCallback mTelephonyCallback;
private class PhoneTelephonyCallback extends TelephonyCallback implements
TelephonyCallback.CallStateListener {
@@ -418,27 +417,20 @@
@Override
public void onResume() {
super.onResume();
-
updateBody();
-
- final Context context = getActivity();
- if (queryImsState(mSubId).isWifiCallingSupported()) {
+ Context context = getActivity();
+ if (mTelephonyCallback == null && queryImsState(mSubId).isWifiCallingSupported()) {
+ mTelephonyCallback = new PhoneTelephonyCallback();
getTelephonyManagerForSub(mSubId).registerTelephonyCallback(
context.getMainExecutor(), mTelephonyCallback);
-
mSwitchBar.addOnSwitchChangeListener(this);
-
- mValidListener = true;
}
-
context.registerReceiver(mIntentReceiver, mIntentFilter,
Context.RECEIVER_EXPORTED_UNAUDITED);
-
final Intent intent = getActivity().getIntent();
if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
showAlert(intent);
}
-
// Register callback for provisioning changes.
registerProvisioningChangedCallback();
}
@@ -446,19 +438,13 @@
@Override
public void onPause() {
super.onPause();
-
- final Context context = getActivity();
-
- if (mValidListener) {
- mValidListener = false;
-
+ Context context = getActivity();
+ if (mTelephonyCallback != null) {
getTelephonyManagerForSub(mSubId).unregisterTelephonyCallback(mTelephonyCallback);
-
+ mTelephonyCallback = null;
mSwitchBar.removeOnSwitchChangeListener(this);
}
-
context.unregisterReceiver(mIntentReceiver);
-
// Remove callback for provisioning changes.
unregisterProvisioningChangedCallback();
}