2011-02-08 27 views
6

Pracuję nad aplikacją automatycznego uruchamiania Androida, która jest w zasadzie zależna od stanu karty SIM. Gdy uruchomi się moja aplikacja, potrzebuję jej do sprawdzenia, gdzie karta SIM została zmieniona. Następnie porównuję bieżącą kartę SIM z poprzednią kartą SIM, uzyskując udostępnioną preferencję. Ale aplikacja zwraca wyjątek wskaźnika pustego podczas pobierania wartości nowej karty SIM.Menedżer telefonu Android do wykrywania sim

Chcę reagować na stany sim.

Po otrzymaniu stanu SIM_STATE_READY chcę uzyskać nowy stan SIM od menedżera telefonicznego.

telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
    int simState = telMgr.getSimState(); 

    switch (simState) 
    { 
     case (TelephonyManager.SIM_STATE_ABSENT): 
      System.out.println("*******************************************Sim State absent******************************"); 
      break; 
     case (TelephonyManager.SIM_STATE_NETWORK_LOCKED): 
      System.out.println("*******************************************SIM_STATE_NETWORK_LOCKED******************************"+sim); 
      break; 

     case (TelephonyManager.SIM_STATE_PIN_REQUIRED): 
      System.out.println("*******************************************SIM_STATE_PIN_REQUIRED******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_PUK_REQUIRED): 
      System.out.println("*******************************************SIM_STATE_PUK_REQUIRED******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_UNKNOWN): 
      System.out.println("*******************************************SIM_STATE_UNKNOWN******************************"+sim); 
     break; 
     case (TelephonyManager.SIM_STATE_READY): 
     { 

     } 
    break; 
    } 
    default: break; 
    } 

robię to, ale nie wiem jak do nasłuchiwania SIM stany chcę gdy karta SIM jest gotowy, aby można było następnie wykonanie kodu. Po uruchomieniu urządzenie zawsze zwraca "SIM_STATE_UNKNOWN" i powoduje zakończenie wykonywania programu.

Proszę, pomóż mi to osiągnąć.

Odpowiedz

0

Poniżej kod pomoże Ci pobrać SIM seryjny nr

TelephonyManager mTelephonyMgr = 
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 

String sSimSerial = mTelephonyMgr.getSimSerialNumber(); 

ustawić następujące pozwolenie na Android plik manifestu

android.permission.READ_PHONE_STATE

+0

HI .. I nie ma żadnego problemu, podczas gdy coraz sim .. nie chcę, aby reagować na stany sim .. –

+1

W jaki sposób getSimSerialNumber() działa z telefonami dual SIM? – gonzobrains

1

Czy starasz Twoja aplikacja na emulatorze Androida? Może musisz wypróbować swoją aplikację bezpośrednio na telefonie z Androidem, myślę, że emulator Androida nie obsługuje twojej aplikacji.

3

Jeśli chcesz reagować na zmiany Sim trzeba ustawić słuchacza:

final TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 

    tm.listen(new PhoneStateListener() { 
     @Override 
     public void onServiceStateChanged(ServiceState serviceState) { 
      //Code in here executed on Sim State change 
     } 

     @Override 
     public void onDataConnectionStateChanged(int state) { 

     } 
Powiązane problemy