在正常情况下,如果用户使用的是他的设备,我会通过以下代码获取国家/地区代码:
TelephonyManager manager = (TelephonyManager) cxt.getSystemService(Context.TELEPHONY_SERVICE);
//getNetworkCountryIso
if (manager != null && manager.getSimCountryIso() != null) {
return manager.getSimCountryIso().toLowerCase();
}
但是当设备中有2个模拟市民时,以上代码会发生什么?以及当设备持有电子SIM卡而不是物理SIM卡时,如何获取国家/地区ISO代码。
答案 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());
}
}
}