Loading res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -13188,7 +13188,7 @@ <!-- Provider Model: Calls and SMS controllers settings screen, item title to go into the Calls and SMS settings --> <string name="calls_and_sms">Calls & SMS</string> <!-- Provider Model: Name for call settings category [CHAR LIMIT=NONE] --> <string name="calls_and_sms_category">Wi\u2011Fi Calling</string> <string name="calls_and_sms_category">Wi\u2011Fi calling</string> <!-- Provider Model: Summary for calling preference --> <string name="calls_sms_wfc_summary">Make and receive calls over Wi\u2011Fi</string> <!-- Provider Model: Label for footnote on calling preference --> src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java +36 −27 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; Loading @@ -50,7 +50,6 @@ import com.android.settingslib.core.lifecycle.Lifecycle; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * Copied the logic of WiFi calling from {@link WifiCallingPreferenceController}. Loading @@ -72,8 +71,7 @@ public class NetworkProviderWifiCallingGroup extends private Map<Integer, TelephonyManager> mTelephonyManagerList = new HashMap<>(); private Map<Integer, PhoneAccountHandle> mSimCallManagerList = new HashMap<>(); private Map<Integer, Preference> mWifiCallingForSubPreferences; private Set<Integer> mSubIdList = new ArraySet<>(); private List<SubscriptionInfo> mSubInfoListForWfc; public NetworkProviderWifiCallingGroup(Context context, Lifecycle lifecycle, String preferenceGroupKey) { Loading @@ -83,18 +81,26 @@ public class NetworkProviderWifiCallingGroup extends mPreferenceGroupKey = preferenceGroupKey; mWifiCallingForSubPreferences = new ArrayMap<>(); lifecycle.addObserver(this); setSubscriptionInfoList(context); lifecycle.addObserver(this); } private void setSubscriptionInfoList(Context context) { final List<SubscriptionInfo> subscriptions = SubscriptionUtil.getActiveSubscriptions( mSubscriptionManager); for (SubscriptionInfo info : subscriptions) { mSubInfoListForWfc = SubscriptionUtil.getActiveSubscriptions(mSubscriptionManager); if (mSubInfoListForWfc != null) { mSubInfoListForWfc.removeIf(info -> { final int subId = info.getSubscriptionId(); mSubIdList.add(subId); 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"); } } Loading Loading @@ -131,7 +137,12 @@ public class NetworkProviderWifiCallingGroup extends @Override public boolean isAvailable() { return mSubIdList.size() >= 1; if (mSubInfoListForWfc == null) { Log.d(TAG, "No active subscriptions, hide the controller"); return false; } else { return mSubInfoListForWfc.size() >= 1; } } @Override Loading Loading @@ -167,19 +178,15 @@ public class NetworkProviderWifiCallingGroup extends final Map<Integer, Preference> toRemovePreferences = mWifiCallingForSubPreferences; mWifiCallingForSubPreferences = new ArrayMap<>(); final List<SubscriptionInfo> subscriptions = SubscriptionUtil.getActiveSubscriptions( mSubscriptionManager); setSubscriptionInfoForPreference(subscriptions, toRemovePreferences); setSubscriptionInfoForPreference(toRemovePreferences); for (Preference pref : toRemovePreferences.values()) { mPreferenceGroup.removePreference(pref); } } private void setSubscriptionInfoForPreference(List<SubscriptionInfo> subscriptions, Map<Integer, Preference> toRemovePreferences) { private void setSubscriptionInfoForPreference(Map<Integer, Preference> toRemovePreferences) { int order = PREF_START_ORDER; for (SubscriptionInfo info : subscriptions) { for (SubscriptionInfo info : mSubInfoListForWfc) { final int subId = info.getSubscriptionId(); if (!shouldShowWifiCallingForSub(subId)) { Loading @@ -192,9 +199,11 @@ public class NetworkProviderWifiCallingGroup extends mPreferenceGroup.addPreference(pref); } CharSequence title = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext); CharSequence title = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext); if (getPhoneAccountHandleForSubscriptionId(subId) != null) { final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent( mContext, getPhoneAccountHandleForSubscriptionId(subId)); if (intent != null) { final PackageManager pm = mContext.getPackageManager(); Loading Loading
res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -13188,7 +13188,7 @@ <!-- Provider Model: Calls and SMS controllers settings screen, item title to go into the Calls and SMS settings --> <string name="calls_and_sms">Calls & SMS</string> <!-- Provider Model: Name for call settings category [CHAR LIMIT=NONE] --> <string name="calls_and_sms_category">Wi\u2011Fi Calling</string> <string name="calls_and_sms_category">Wi\u2011Fi calling</string> <!-- Provider Model: Summary for calling preference --> <string name="calls_sms_wfc_summary">Make and receive calls over Wi\u2011Fi</string> <!-- Provider Model: Label for footnote on calling preference -->
src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java +36 −27 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; Loading @@ -50,7 +50,6 @@ import com.android.settingslib.core.lifecycle.Lifecycle; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * Copied the logic of WiFi calling from {@link WifiCallingPreferenceController}. Loading @@ -72,8 +71,7 @@ public class NetworkProviderWifiCallingGroup extends private Map<Integer, TelephonyManager> mTelephonyManagerList = new HashMap<>(); private Map<Integer, PhoneAccountHandle> mSimCallManagerList = new HashMap<>(); private Map<Integer, Preference> mWifiCallingForSubPreferences; private Set<Integer> mSubIdList = new ArraySet<>(); private List<SubscriptionInfo> mSubInfoListForWfc; public NetworkProviderWifiCallingGroup(Context context, Lifecycle lifecycle, String preferenceGroupKey) { Loading @@ -83,18 +81,26 @@ public class NetworkProviderWifiCallingGroup extends mPreferenceGroupKey = preferenceGroupKey; mWifiCallingForSubPreferences = new ArrayMap<>(); lifecycle.addObserver(this); setSubscriptionInfoList(context); lifecycle.addObserver(this); } private void setSubscriptionInfoList(Context context) { final List<SubscriptionInfo> subscriptions = SubscriptionUtil.getActiveSubscriptions( mSubscriptionManager); for (SubscriptionInfo info : subscriptions) { mSubInfoListForWfc = SubscriptionUtil.getActiveSubscriptions(mSubscriptionManager); if (mSubInfoListForWfc != null) { mSubInfoListForWfc.removeIf(info -> { final int subId = info.getSubscriptionId(); mSubIdList.add(subId); 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"); } } Loading Loading @@ -131,7 +137,12 @@ public class NetworkProviderWifiCallingGroup extends @Override public boolean isAvailable() { return mSubIdList.size() >= 1; if (mSubInfoListForWfc == null) { Log.d(TAG, "No active subscriptions, hide the controller"); return false; } else { return mSubInfoListForWfc.size() >= 1; } } @Override Loading Loading @@ -167,19 +178,15 @@ public class NetworkProviderWifiCallingGroup extends final Map<Integer, Preference> toRemovePreferences = mWifiCallingForSubPreferences; mWifiCallingForSubPreferences = new ArrayMap<>(); final List<SubscriptionInfo> subscriptions = SubscriptionUtil.getActiveSubscriptions( mSubscriptionManager); setSubscriptionInfoForPreference(subscriptions, toRemovePreferences); setSubscriptionInfoForPreference(toRemovePreferences); for (Preference pref : toRemovePreferences.values()) { mPreferenceGroup.removePreference(pref); } } private void setSubscriptionInfoForPreference(List<SubscriptionInfo> subscriptions, Map<Integer, Preference> toRemovePreferences) { private void setSubscriptionInfoForPreference(Map<Integer, Preference> toRemovePreferences) { int order = PREF_START_ORDER; for (SubscriptionInfo info : subscriptions) { for (SubscriptionInfo info : mSubInfoListForWfc) { final int subId = info.getSubscriptionId(); if (!shouldShowWifiCallingForSub(subId)) { Loading @@ -192,9 +199,11 @@ public class NetworkProviderWifiCallingGroup extends mPreferenceGroup.addPreference(pref); } CharSequence title = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext); CharSequence title = SubscriptionUtil.getUniqueSubscriptionDisplayName(info, mContext); if (getPhoneAccountHandleForSubscriptionId(subId) != null) { final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent( mContext, getPhoneAccountHandleForSubscriptionId(subId)); if (intent != null) { final PackageManager pm = mContext.getPackageManager(); Loading