如何检查SIM卡是否处于活动状态?

时间:2019-02-22 09:55:12

标签: android

我有一个用例,需要检查设备中的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卡存在于设备中但仍未激活?

2 个答案:

答案 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
}

Examples here