12

Stavo cercando di ottenere il numero MCC e MNC (in pratica voglio il numero IMSI ma anche questi saranno sufficienti) nel dispositivo Android 5.1 con dual Sim (entrambi attivi). Come 5.1 supporta dual sim così ho usato il manager di sottoscrizione in questo modo:SubscriptionInfo.getMnc() restituisce lo stesso valore per entrambe le SIM con diversi gestori

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

ed ha ottenuto la questa uscita:

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 (sarà lo stesso in quanto lo stesso paese) notare che MNC sono lo stesso sebbene i corrieri siano diversi.

Mentre stavo spegnendo il telefono ho visto questo le linee del mio 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} 

Come si può vedere l'applicazione Blocco tastiera ottiene il MNC giusta sia per la sim.

Così ho esplorato il codice dell'applicazione blocco della tastiera e ha scoperto che il codice è lo stesso stavo usando codice da sorgenti di Android tratto da 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"); 
      } 
     } 

ho esplorato un po 'di più e ha scoperto che anche il blocco della tastiera le applicazioni ottengono il controllo MCC solo quando il telefono si sta spegnendo, altre volte anche la stessa MNC per entrambe le SIM. Ma il nome del vettore è sempre diverso.

Si tratta di un bug in Android 5.1 o sto facendo qualcosa di sbagliato?

+0

Suppongo che si sia trattato di un bug in Android, che è stato corretto dopo aver aggiornato il telefono. – Build3r

+0

Lo stesso problema su Motorola Moto E con Android 5.1 –

+0

Ho lo stesso problema su Android 6. – jollyroger

risposta

0

Ho avuto lo stesso problema in Android 5.1 in Samsung J5, ma funziona su Android 6.0 in Moto X Play. Poiché SubscriptionManager è stato introdotto in Android 5.1, immagino si tratti di un bug in Android 5.1, corretto in Android M.

Problemi correlati