Какой слот SIM-карты проверяется при вызове telephonyMananger.getSimSerialNumber () в телефоне с двумя сим-картами? - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужен серийный номер SIM-карты для идентификации SIM-карты для применения.Код очень прост для телефонов с одной SIM-картой,

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

Однако, когда я проверяю это на телефоне с двумя SIM-картами, это становится странным, потому что я не могу быть уверен, возвращен ли серийный номер из слота 1 илиСлот 2. Есть ли способ получить серийные номера обеих симок?Или я могу каким-либо образом определить, какой слот Sim возвращает серийный номер при вызове вышеуказанного кода?

PS Мне не нужны номера IMEI или номера IMSI.Мне особенно нужен серийный номер SIM-карты (SSN).

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Для уровня API> = 22 * ​​1002 *

Может быть получено с помощью Класс 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 </strong>

Для одной SIM-карты: TelephonyManager.getSimSerialNumber()

Для двойной симки: зависит от производителя телефона. Не существует определенного способа получения Sim Serial Number для двойного сима ниже уровня API 21.

0 голосов
/ 11 сентября 2018

Проверьте это.

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)
    }
...