2011-02-08 12 views
6

Sto lavorando a un'app di avvio automatico Android che dipende in gran parte dallo stato della scheda SIM. All'avvio automatico della mia app, ho bisogno che controlli la posizione della carta SIM. Successivamente, confronto la SIM corrente con la SIM precedente ottenendo la preferenza condivisa. Ma l'app restituisce un'eccezione di puntatore nullo quando ottiene il valore della nuova carta SIM.Gestione telefono Android per rilevare sim

Voglio reagire di stati sim.

Quando ricevo lo stato SIM_STATE_READY, desidero ottenere il nuovo stato SIM dal gestore telefonico.

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

sto facendo questo, ma non so come ascoltare per SIM gli stati che voglio quando la SIM è pronto in modo che possa poi eseguire del codice. Quando il dispositivo si avvia, restituisce sempre "SIM_STATE_UNKNOWN" e fa sì che l'esecuzione del programma sia completata.

Per favore aiutatemi a raggiungere questo obiettivo.

risposta

0

sottostante Codice vi aiuterà a procurarsi la SIM No Serial

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

String sSimSerial = mTelephonyMgr.getSimSerialNumber(); 

impostare le seguenti autorizzazioni su Android manifest

android.permission.READ_PHONE_STATE

+0

HI .. non ho alcun problema durante il recupero del sim no .. voglio reagire agli stati sim .. –

+1

In che modo getSimSerialNumber() funziona con i telefoni dual SIM? – gonzobrains

1

Non si tenta la tua app su emulatore Android? Forse dovresti provare la tua applicazione su Android direttamente, penso che l'emulatore di Android non possa supportare la tua applicazione.

3

Se si vuole reagire a un cambiamento di Sim è necessario impostare un ascoltatore:

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) { 

     } 
Problemi correlati