diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java index 73d964a95c1..c439f75e81e 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -227,16 +227,23 @@ public class MobileNetworkUtils { final String currentCountry = tm.getNetworkCountryIso().toLowerCase(); final String supportedCountries = Settings.Global.getString(cr, Settings.Global.EUICC_SUPPORTED_COUNTRIES); + final String unsupportedCountries = + Settings.Global.getString(cr, Settings.Global.EUICC_UNSUPPORTED_COUNTRIES); + boolean inEsimSupportedCountries = false; - if (TextUtils.isEmpty(currentCountry)) { - inEsimSupportedCountries = true; - } else if (!TextUtils.isEmpty(supportedCountries)) { - final List supportedCountryList = - Arrays.asList(TextUtils.split(supportedCountries.toLowerCase(), ",")); - if (supportedCountryList.contains(currentCountry)) { - inEsimSupportedCountries = true; - } + + if (TextUtils.isEmpty(supportedCountries)) { + // White list is empty, use blacklist. + Log.d(TAG, "Using blacklist unsupportedCountries=" + unsupportedCountries); + inEsimSupportedCountries = !isEsimUnsupportedCountry(currentCountry, + unsupportedCountries); + } else { + Log.d(TAG, "Using whitelist supportedCountries=" + supportedCountries); + inEsimSupportedCountries = isEsimSupportedCountry(currentCountry, supportedCountries); } + + Log.d(TAG, "inEsimSupportedCountries=" + inEsimSupportedCountries); + final boolean esimIgnoredDevice = Arrays.asList(TextUtils.split(SystemProperties.get(KEY_ESIM_CID_IGNORE, ""), ",")) .contains(SystemProperties.get(KEY_CID, null)); @@ -612,4 +619,24 @@ public class MobileNetworkUtils { } return tm.getNetworkOperatorName(); } + + private static boolean isEsimSupportedCountry(String country, String countriesListString) { + if (TextUtils.isEmpty(country)) { + return true; + } else if (TextUtils.isEmpty(countriesListString)) { + return false; + } + final List supportedCountries = + Arrays.asList(TextUtils.split(countriesListString.toLowerCase(), ",")); + return supportedCountries.contains(country); + } + + private static boolean isEsimUnsupportedCountry(String country, String countriesListString) { + if (TextUtils.isEmpty(country) || TextUtils.isEmpty(countriesListString)) { + return false; + } + final List unsupportedCountries = + Arrays.asList(TextUtils.split(countriesListString.toLowerCase(), ",")); + return unsupportedCountries.contains(country); + } }