在双卡 phone 中调用 telephonyMananger.getSimSerialNumber() 时检查哪个 SIM 插槽?

Which SIM slot is checked when telephonyMananger.getSimSerialNumber() is called in a dual sim phone?

我需要SIM序列号来识别SIM卡以进行申请。单卡码很简单 phones,

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
sim_ID = telephonyManager.getSimSerialNumber();

但是,当我在双 SIM 卡上测试时 phone 它变得很奇怪,因为我不能确定返回的序列号是来自插槽 1 还是插槽 2。有没有办法同时获得sim序列号?或者我能否以任何方式识别调用上述代码时哪个 Sim 插槽返回序列号?

P.S。我不需要 IMEI 号码或 IMSI 号码。我特别需要 SIM 序列号 (SSN)。

检查这个。

TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    SubscriptionManager manager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
    List<SubscriptionInfo> infoList = manager.getActiveSubscriptionInfoList();

    for (int i = 0; i < infoList.size(); i++) {

        SubscriptionInfo info = infoList.get(i);
        //info.getSimSlotIndex() <- sim card slot number
        //info.getNumber() <- sim card phone number (if exist, you can set this in sim card management)
    }

对于API等级>=22

可以使用 SubscriptionManager class(添加到 API 级别 22,https://developer.android.com/reference/android/telephony/SubscriptionManager

SubscriptionManager sManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE)
SubscriptionInfo infoSim1 = sManager.getActiveSubscriptionInfoForSimSlotIndex(0);
SubscriptionInfo infoSim2 = sManager.getActiveSubscriptionInfoForSimSlotIndex(1);

对于 API 级别 <= 21

对于单 SIM 卡:TelephonyManager.getSimSerialNumber()

对于双卡:这取决于 phone 的制造商。 API 21 级以下的双 SIM 卡 Sim Serial Number 没有确定的方法。