从多个SIM卡设备和e-sim设备获取SIM卡国家ISO



在用户拥有物理SIM卡是他的设备的常规情况下,我将通过以下代码获取国家/地区区域性代码:

TelephonyManager manager = (TelephonyManager) cxt.getSystemService(Context.TELEPHONY_SERVICE);
//getNetworkCountryIso
if (manager != null && manager.getSimCountryIso() != null) {
return manager.getSimCountryIso().toLowerCase();
}

但是当设备中有 2 个 SIM 卡时,上面的代码会发生什么? 当设备持有 e-SIM 而不是物理 SIM 卡时,我将如何获得国家 ISO 代码。

您的代码获取SIM卡的国家/地区ISO,该SIM卡位于插槽1处,这将不关心其他SIM卡插槽。

为了读取所有SIM卡插槽,请通过调用SubscriptionManager.getSubscriptionId((来获取SIM卡订阅,这将返回一个subscription ID's数组 众所周知,Android多SIM卡支持完全基于制造商,在Google Android中,如果双/多SIM卡,您可以通过以下方式更新TelephonyManager

subIds[] = SubscriptionManager.getSubscriptionIds(slotInex) //Pass slot index ex: 0,1 etc
for(int i=0;i<subIds.lenth();i++){
if (SubscriptionManager.isActiveSubscriptionId(subIds[i])){
TelephonyManager manager = telephonyManager.createForSubscriptionId(subIds[i]);
if (manager != null && manager.getSimCountryIso() != null) {
System.out.println(manager.getSimCountryIso().toLowerCase());
}
}
}

最新更新