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

时间:2019-12-05 10:27:58

标签: android telephony country-codes

在正常情况下,如果用户使用的是他的设备,我会通过以下代码获取国家/地区代码:

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

但是当设备中有2个模拟市民时,以上代码会发生什么?以及当设备持有电子SIM卡而不是物理SIM卡时,如何获取国家/地区ISO代码。

1 个答案:

答案 0 :(得分:0)

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

为了读取所有SIM卡插槽,请调用SubscriptionManager.getSubscriptionId()来获取SIM卡的预订,这将返回subscription ID's的数组 我们知道,Android Multiple SIM支持完全基于制造商,在Google android中,如果使用双SIM卡/多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());
      }
    }
}