Merge "[Settings] Avoid NPE when user enter WifiCallingSettings back and forth" into udc-d1-dev am: 1765c1dc6e am: ee77d651fa am: f5acc230b3

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23695884

Change-Id: Ibfbd74b4c9f2298fe210b22dccf36acb71f3c99c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2023-06-15 07:17:44 +00:00
committed by Automerger Merge Worker

View File

@@ -94,7 +94,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
private ListWithEntrySummaryPreference mButtonWfcRoamingMode; private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
private Preference mUpdateAddress; private Preference mUpdateAddress;
private boolean mValidListener = false;
private boolean mEditableWfcMode = true; private boolean mEditableWfcMode = true;
private boolean mEditableWfcRoamingMode = true; private boolean mEditableWfcRoamingMode = true;
private boolean mUseWfcHomeModeForRoaming = false; private boolean mUseWfcHomeModeForRoaming = false;
@@ -104,7 +103,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
private ProvisioningManager mProvisioningManager; private ProvisioningManager mProvisioningManager;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private final PhoneTelephonyCallback mTelephonyCallback = new PhoneTelephonyCallback(); private PhoneTelephonyCallback mTelephonyCallback;
private class PhoneTelephonyCallback extends TelephonyCallback implements private class PhoneTelephonyCallback extends TelephonyCallback implements
TelephonyCallback.CallStateListener { TelephonyCallback.CallStateListener {
@@ -420,27 +419,20 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
updateBody(); updateBody();
Context context = getActivity();
final Context context = getActivity(); if (mTelephonyCallback == null && queryImsState(mSubId).isWifiCallingSupported()) {
if (queryImsState(mSubId).isWifiCallingSupported()) { mTelephonyCallback = new PhoneTelephonyCallback();
getTelephonyManagerForSub(mSubId).registerTelephonyCallback( getTelephonyManagerForSub(mSubId).registerTelephonyCallback(
context.getMainExecutor(), mTelephonyCallback); context.getMainExecutor(), mTelephonyCallback);
mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.addOnSwitchChangeListener(this);
mValidListener = true;
} }
context.registerReceiver(mIntentReceiver, mIntentFilter, context.registerReceiver(mIntentReceiver, mIntentFilter,
Context.RECEIVER_EXPORTED_UNAUDITED); Context.RECEIVER_EXPORTED_UNAUDITED);
final Intent intent = getActivity().getIntent(); final Intent intent = getActivity().getIntent();
if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) { if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
showAlert(intent); showAlert(intent);
} }
// Register callback for provisioning changes. // Register callback for provisioning changes.
registerProvisioningChangedCallback(); registerProvisioningChangedCallback();
} }
@@ -448,19 +440,13 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
Context context = getActivity();
final Context context = getActivity(); if (mTelephonyCallback != null) {
if (mValidListener) {
mValidListener = false;
getTelephonyManagerForSub(mSubId).unregisterTelephonyCallback(mTelephonyCallback); getTelephonyManagerForSub(mSubId).unregisterTelephonyCallback(mTelephonyCallback);
mTelephonyCallback = null;
mSwitchBar.removeOnSwitchChangeListener(this); mSwitchBar.removeOnSwitchChangeListener(this);
} }
context.unregisterReceiver(mIntentReceiver); context.unregisterReceiver(mIntentReceiver);
// Remove callback for provisioning changes. // Remove callback for provisioning changes.
unregisterProvisioningChangedCallback(); unregisterProvisioningChangedCallback();
} }