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?
Przypuszczam, że to był błąd w Androidzie, został naprawiony po aktualizacji telefonu. – Build3r
Ten sam dokładny problem na Motoroli Moto E z systemem Android 5.1 –
Mam ten sam problem na Androidzie 6. – jollyroger