2011-03-22 31 views

Respuesta

8

No tengo conocimiento de un evento, pero el teléfono se apagará y se encenderá cuando se cambie la tarjeta SIM para que pueda crear un servicio que almacene el número de serie de la tarjeta SIM en preferencias y luego compare el número de serie almacenado con eso en la SIM actual cuando comienza el servicio.

Aquí hay detalles de acceder a los datos SIM: Access the SIM Card with an Android Application?

+5

Puede ser posible expulsar la tarjeta SIM sin encender el teléfono en algunos modelos. – pixel

+2

Sí, en Galaxy Nexus, puede quitar la tarjeta SIM mientras se ejecuta. Si inserta una nueva tarjeta SIM mientras se está ejecutando, no tendrá efecto hasta que se apague y encienda. Obtener el número del administrador de telefonía devolverá cadena nula/vacía. –

7

Guardar la cureent SIM ID y cada vez que el teléfono pasa de un estado a AirplaneModeON AirplaneModeOFF comprobar si la nueva SIM ID es el mismo que el guardado antes.

Compruebe this answer para ver cómo detectar el modo de avión.

Espero que esta respuesta a su pregunta.

13

Básicamente, la respuesta a esta pregunta "How to monitor SIM state change" es la respuesta correcta a su pregunta también.

Así se crea una nueva clase

package a.b.c; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class SimChangedReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     Log.d("SimChangedReceiver", "--> SIM state changed <--"); 

     // Most likely, checking if the SIM changed could be limited to 
     // events where the intent's extras contains a key "ss" with value "LOADED". 
     // But it is more secure to just always check if there was a change. 
    } 
} 

y adapte su AndroidManifest.xml para contener

<!-- put this where your other permissions are: --> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<!-- and --> 
<application 
    android:name="a.b.c...." 
    ... > 
    <!-- put this somewhere into your application section: --> 
    <receiver android:name="a.b.c.SimChangedReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.SIM_STATE_CHANGED"/> 
     </intent-filter> 
    </receiver> 
</application> 

Como es habitual en Android hay ninguna garantía de que funciona en cualquier versión, ni en dispositivos de cualquier fabricante.

3

Debe registrar un BroadcastReceiver para recibir la acción android.intent.action.SIM_STATE_CHANGED.

Esta acción está incluida en com.android.internal.telephony.TelephonyIntents.java y no se puede encontrar en la documentación de Android. Cuando lo hayas recibido (por ejemplo, tarjeta SIM incorporada/extra), obtén Sim State extra con la clave ss.

Cuestiones relacionadas