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

问题描述 投票:0回答:2

我需要SIM序列号来识别应用的SIM卡。单个SIM卡手机的代码非常简单,

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

但是,当我在双SIM卡手机上进行测试时,它会变得奇怪,因为我无法确定返回的序列号是来自Slot 1还是Slot 2.有没有办法获得两个SIM卡的序列号?或者,我可以以任何方式确定在调用上述代码时哪个Sim插槽返回序列号?

附:我不需要IMEI号码或IMSI号码。我特别需要SIM序列号(SSN)。

android telephonymanager
2个回答
0
投票

对于API级别> = 22

它可以使用SubscriptionManager类获得(在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()

对于双卡:这取决于手机的制造商。没有确定的方法可以获得低于API级别21的双SIM卡的Sim Serial Number


1
投票

检查一下。

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)
    }
© www.soinside.com 2019 - 2024. All rights reserved.