我有一个用例,需要检查设备中的SIM卡是否处于活动状态。在较旧的设备中,我可以使用TelephonyManager来获取SIM卡状态并检查它是否为SIM_STATE_READY。该问题与API 22及更高版本有关。
使用SubscriptionManager,当我调用getActiveSubscriptionInfoList时,即使我已将其关闭,它也会向我发送有关存在的SIM的详细信息。我浏览了SubscriptionManager的文档,但是找不到类似的方法来检查SIM卡的状态。在22以上的API中使用TelephonyManager只能提供有关默认SIM卡的信息,我想了解有关双SIM卡电话中的两个插槽的信息。另外,我在TelephonyManager中找到了getSimState的重载变体,该变体的确接受了插槽作为参数,但是在API 26中引入了。我想要一种也可以在API 22-25中使用的解决方案。
有没有一种方法可以识别即使SIM卡存在于设备中但仍未激活?
答案 0 :(得分:1)
您可以像这样检查设备是否为双卡
SubscriptionManager sManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
SubscriptionInfo infoSim1 = sManager.getActiveSubscriptionInfoForSimSlotIndex(0);
SubscriptionInfo infoSim2 = sManager.getActiveSubscriptionInfoForSimSlotIndex(1);
int count = 0;
if (infoSim1 != null ) {
count++;
}
if (infoSim2 != null){
count++;
}
count决定有多少个模拟用户处于活动状态。
OR
您可以获取计数,然后一一检查
sManager.getActiveSubscriptionInfoCount()
希望它能正常工作。
答案 1 :(得分:0)
TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (manager.getPhoneCount() == 2) {
// Dual sim
}