[WFC] The WFC UI did not refresh after the subscriptionInfoChanged

Add the listener for subscriptionInfoChanged and update the Visible
of the category.

Bug: 233783112
Test: atest NetworkProviderWifiCallingGroupTest
Change-Id: I7698915abb2f3b0ba2b40d8e78fe4e3302756c91
This commit is contained in:
SongFerngWang
2022-07-12 01:40:00 +08:00
parent 0018589f09
commit d9bc33e3b5

View File

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