Merge "Change MobileNetworkUtils to use EuiccManager.isSupportedCountry"

This commit is contained in:
Bonian Chen
2020-08-12 04:10:10 +00:00
committed by Gerrit Code Review

View File

@@ -330,33 +330,11 @@ public class MobileNetworkUtils {
final EuiccManager euiccManager = final EuiccManager euiccManager =
(EuiccManager) context.getSystemService(EuiccManager.class); (EuiccManager) context.getSystemService(EuiccManager.class);
if (!euiccManager.isEnabled()) { if (!euiccManager.isEnabled()) {
Log.w(TAG, "EuiccManager is not enabled.");
return false; return false;
} }
final ContentResolver cr = context.getContentResolver(); final ContentResolver cr = context.getContentResolver();
final TelephonyManager tm =
(TelephonyManager) context.getSystemService(TelephonyManager.class);
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(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 = final boolean esimIgnoredDevice =
Arrays.asList(TextUtils.split(SystemProperties.get(KEY_ESIM_CID_IGNORE, ""), ",")) Arrays.asList(TextUtils.split(SystemProperties.get(KEY_ESIM_CID_IGNORE, ""), ","))
.contains(SystemProperties.get(KEY_CID, null)); .contains(SystemProperties.get(KEY_CID, null));
@@ -366,9 +344,13 @@ public class MobileNetworkUtils {
Settings.Global.getInt(cr, Settings.Global.EUICC_PROVISIONED, 0) != 0; Settings.Global.getInt(cr, Settings.Global.EUICC_PROVISIONED, 0) != 0;
final boolean inDeveloperMode = final boolean inDeveloperMode =
DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context); DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context);
Log.i(TAG,
String.format("showEuiccSettings: esimIgnoredDevice: %b, enabledEsimUiByDefault: "
+ "%b, euiccProvisioned: %b, inDeveloperMode: %b.",
esimIgnoredDevice, enabledEsimUiByDefault, euiccProvisioned, inDeveloperMode));
return (inDeveloperMode || euiccProvisioned return (inDeveloperMode || euiccProvisioned
|| (!esimIgnoredDevice && enabledEsimUiByDefault && inEsimSupportedCountries)); || (!esimIgnoredDevice && enabledEsimUiByDefault
&& isCurrentCountrySupported(context)));
} }
/** /**
@@ -733,26 +715,6 @@ public class MobileNetworkUtils {
return tm.getNetworkOperatorName(); 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<String> 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<String> unsupportedCountries =
Arrays.asList(TextUtils.split(countriesListString.toLowerCase(), ","));
return unsupportedCountries.contains(country);
}
private static int[] getActiveSubscriptionIdList(Context context) { private static int[] getActiveSubscriptionIdList(Context context) {
final SubscriptionManager subscriptionManager = context.getSystemService( final SubscriptionManager subscriptionManager = context.getSystemService(
SubscriptionManager.class); SubscriptionManager.class);
@@ -770,6 +732,26 @@ public class MobileNetworkUtils {
return activeSubIds; return activeSubIds;
} }
/**
* Loop through all the device logical slots to check whether the user's current country
* supports eSIM.
*/
private static boolean isCurrentCountrySupported(Context context) {
final EuiccManager em = (EuiccManager) context.getSystemService(EuiccManager.class);
final TelephonyManager tm =
(TelephonyManager) context.getSystemService(TelephonyManager.class);
for (int i = 0; i < tm.getPhoneCount(); i++) {
String countryCode = tm.getNetworkCountryIso(i);
if (em.isSupportedCountry(countryCode)) {
Log.i(TAG, "isCurrentCountrySupported: eSIM is supported in " + countryCode);
return true;
}
}
Log.i(TAG, "isCurrentCountrySupported: eSIM is not supported in the current country.");
return false;
}
/** /**
* Imported from {@link android.telephony.RadioAccessFamily} * Imported from {@link android.telephony.RadioAccessFamily}
*/ */