12

Я пытался получить номер MCC и MNC (в основном, я хочу номер IMSI, но этого также достаточно) на устройстве Android 5.1, имеющем двойной Sim (оба активных). Как 5,1 поддерживает двойной Sim, так что я использовал менеджер подписки, как это:SubscriptionInfo.getMnc() возвращает одно и то же значение для SIM-карт с разными несущими

SubscriptionManager manager = SubscriptionManager.from(this); 
List<SubscriptionInfo> sil = manager.getActiveSubscriptionInfoList(); 
    if (sil != null) { 
     for (SubscriptionInfo subInfo : sil) { 
      Log.v("TestMain", "SubInfo:" + subInfo); 
     } 
    } else { 
     Log.v("TestMain", "SubInfo: list is null"); 
    } 

и получил этот результат:

07-24 18:28:32.162 3844-3844/? V/TestMain﹕ SubInfo:{id=1, mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=Aircel Karnataka carrierName=Aircel — Aircel Karnataka nameSource=0} 
07-24 18:28:32.162 3844-3844/? V/TestMain﹕ SubInfo:{id=2, mcc 405 mnc 803, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Vodafone Karnataka nameSource=0} 

MCC (будет так же как это та же страна) заметить, что МНК являются так же, хотя носители различны.

Пока я выключая телефон Я видел эти строки в моем LogCat:

07-24 18:31:02.295  616-616/? V/KeyguardUpdateMonitor﹕ SubInfo:{id=1, mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=CARD 1 carrierName=Emergency calls only — Aircel Karnataka nameSource=0} 
07-24 18:31:02.295  616-616/? V/KeyguardUpdateMonitor﹕ SubInfo:{id=2, mcc 404 mnc 86, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Emergency calls only — Vodafone Karnataka nameSource=0} 

Как вы можете видеть, приложение клав получает MNC право как для сима.

Так я исследовал код KeyGuard приложения и обнаружили, что код такой же, как я использую кода из Android Источник взят из here:

protected void handleSimSubscriptionInfoChanged() { 
     if (DEBUG_SIM_STATES) { 
      Log.v(TAG, "onSubscriptionInfoChanged()"); 
      List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList(); 
      if (sil != null) { 
       for (SubscriptionInfo subInfo : sil) { 
        Log.v(TAG, "SubInfo:" + subInfo); 
       } 
      } else { 
       Log.v(TAG, "onSubscriptionInfoChanged: list is null"); 
      } 
     } 

Я исследовал немного и нашел, что даже клав приложения получают MCC прямо, только когда телефон выключается, а иногда даже он получает тот же MNC для обеих SIM-карт. Но имя перевозчика всегда отличается.

Является ли это ошибкой в ​​Android 5.1 или я что-то не так?

+0

Я полагаю, это была ошибка в Android, она исправлена ​​после того, как я обновил телефон. – Build3r

+0

Та же самая проблема на Motorola Moto E работает под управлением Android 5.1 –

+0

У меня такая же проблема на Android 6. – jollyroger

ответ

0

У меня такая же проблема в Android 5.1 в Samsung J5, но она работает в Android 6.0 в Moto X Play. Начиная с SubscriptionManager был представлен в Android 5.1, я думаю, это ошибка в Android 5.1, которая была исправлена ​​в Android M.

 Смежные вопросы

  • Нет связанных вопросов^_^