12

Próbowałem uzyskać numer MCC i MNC (w zasadzie chcę numer IMSI, ale te też będą wystarczające) w urządzeniu z Androidem 5.1 z podwójnym Simem (oba aktywne). Jak 5.1 obsługuje Dual SIM więc użyłem menedżera subskrypcji takiego:SubscriptionInfo.getMnc() zwraca tę samą wartość dla obu kart SIM z różnymi nośnikami

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"); 
    } 

i dostał to wyjście:

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} 

MCK (będzie taka sama jak w tym samym kraju) informuje, że MNC są tak samo, jak przewoźnicy są inni.

Chociaż byłem wyłączania telefonu Widziałem to linie w moim 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} 

Jak widać aplikacja blokada klawiatury dostaje MNC prawo zarówno dla karty SIM.

więc zbadać kod blokady klawiatury aplikacji i okazało się, że kod jest taki sam jak używałem kod z Androidem Źródło zaczerpnięty z 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"); 
      } 
     } 

ja zbadałem trochę więcej i okazało się, że nawet przy zablokowanej klawiaturze aplikacje pobierają MCC tylko wtedy, gdy telefon się wyłączy, innym razem nawet gdy otrzymuje on ten sam MNC dla obu kart SIM. Ale nazwa przewoźnika jest zawsze odrębna.

Czy to błąd w systemie Android 5.1, czy też robię coś nie tak?

+0

Przypuszczam, że to był błąd w Androidzie, został naprawiony po aktualizacji telefonu. – Build3r

+0

Ten sam dokładny problem na Motoroli Moto E z systemem Android 5.1 –

+0

Mam ten sam problem na Androidzie 6. – jollyroger

Odpowiedz

0

Mam ten sam problem w systemie Android 5.1 w Samsung J5, ale działa on w systemie Android 6.0 w wersji Moto X Play. Od SubscriptionManager został wprowadzony w systemie Android 5.1, myślę, że jest to błąd w systemie Android 5.1, który został poprawiony w systemie Android M.

Powiązane problemy