diff --git a/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java b/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java index 14bdd4123ab..688084f4488 100644 --- a/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java +++ b/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java @@ -74,6 +74,7 @@ public class NetworkProviderWifiCallingGroup extends private Map mSimCallManagerList = new HashMap<>(); private Map mWifiCallingForSubPreferences; private List mSubInfoListForWfc; + private SubscriptionsChangeListener mChangeListener; public NetworkProviderWifiCallingGroup(Context context, Lifecycle lifecycle, String preferenceGroupKey) { @@ -87,26 +88,25 @@ public class NetworkProviderWifiCallingGroup extends mTelephonyCallback = new PhoneCallStateTelephonyCallback(); } lifecycle.addObserver(this); + mChangeListener = new SubscriptionsChangeListener(context, this); } private void setSubscriptionInfoList(Context context) { mSubInfoListForWfc = new ArrayList<>( SubscriptionUtil.getActiveSubscriptions(mSubscriptionManager)); - if (mSubInfoListForWfc != null) { - mSubInfoListForWfc.removeIf(info -> { - final int subId = info.getSubscriptionId(); - setTelephonyManagerForSubscriptionId(context, subId); - setPhoneAccountHandleForSubscriptionId(context, subId); - boolean isExisted = mSubInfoListForWfc.contains(info); - boolean shouldShowWfcForSub = shouldShowWifiCallingForSub(subId); - if (!shouldShowWfcForSub && isExisted) { - return true; - } - return false; - }); - } else { - Log.d(TAG, "No active subscriptions"); - } + mSubInfoListForWfc.removeIf(info -> { + final int subId = info.getSubscriptionId(); + setTelephonyManagerForSubscriptionId(context, subId); + setPhoneAccountHandleForSubscriptionId(context, subId); + boolean isExisted = mSubInfoListForWfc.contains(info); + boolean shouldShowWfcForSub = shouldShowWifiCallingForSub(subId); + if (!shouldShowWfcForSub && isExisted) { + return true; + } + return false; + }); + Log.d(TAG, "setSubscriptionInfoList: mSubInfoListForWfc size:" + + mSubInfoListForWfc.size()); } private void setTelephonyManagerForSubscriptionId(Context context, int subId) { @@ -137,12 +137,18 @@ public class NetworkProviderWifiCallingGroup extends @OnLifecycleEvent(Event.ON_RESUME) public void onResume() { + if (mChangeListener != null) { + mChangeListener.start(); + } updateListener(); update(); } @OnLifecycleEvent(Event.ON_PAUSE) public void onPause() { + if (mChangeListener != null) { + mChangeListener.stop(); + } if ((mTelephonyCallback != null)) { mTelephonyCallback.unregister(); } @@ -176,6 +182,7 @@ public class NetworkProviderWifiCallingGroup extends private void update() { if (mPreferenceGroup == null) { + Log.d(TAG, "mPreferenceGroup == null"); return; } @@ -255,7 +262,11 @@ public class NetworkProviderWifiCallingGroup extends @Override public void onSubscriptionsChanged() { + Log.d(TAG, "onSubscriptionsChanged:"); setSubscriptionInfoList(mContext); + if (mPreferenceGroup != null) { + mPreferenceGroup.setVisible(isAvailable()); + } updateListener(); update(); } @@ -322,6 +333,7 @@ public class NetworkProviderWifiCallingGroup extends CarrierConfigManager.KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL); } } + Log.d(TAG, "isWifiCallingAvailableForCarrier:" + isWifiCallingAvailableForCarrier); return isWifiCallingAvailableForCarrier; }