/ / Quiero verificar el estado de la SIM cada vez que se inicia el dispositivo Android - Android, tarjeta SIM

Quiero comprobar el estado de la SIM cada vez que se inicie el dispositivo Android: Android, tarjeta SIM

Estoy escribiendo una aplicación para enviar automáticamenteun SMS cuando reemplazo mi tarjeta SIM existente con una nueva tarjeta SIM. Puedo usar la identificación de suscriptor de la tarjeta SIM para verificar esto, pero cómo lo verifico cada vez que se inicia el dispositivo Android. Gracias...

Respuestas

3 para la respuesta № 1

Escriba un receptor de difusión de inicio. Esto se ejecuta cada vez que se inicia el dispositivo. Agregue la siguiente intención a su manifiesto:

    <receiver android:name=".StartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>

con algo como el siguiente código:

public class StartupReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent intent = new Intent(...);
context.startActivity(intent );
}
}

0 para la respuesta № 2

La respuesta de dhaag23 cubre cómo configurar un receptor de inicio. Sin embargo, no menciona que la aplicación debe tener permiso de Arranque completo, ni nada sobre el requisito de su tarjeta SIM

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Para verificar el valor de la tarjeta SIM, he configuradoguarde el número de teléfono del dispositivo en una configuración de la aplicación. Tenga en cuenta que el usuario puede borrar esto en la configuración de la aplicación, y debe manejar cuidadosamente el caso de la primera inicialización. Si detecta una falta de coincidencia del número de teléfono actual y el anterior valor almacenado en la configuración, entonces puede concluir que es una nueva SIM.

Aquí está el método que uso para obtener el número de teléfono actual:

public static String getPhoneNumber(Context context) {
TelephonyManager phoneManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber = phoneManager.getLine1Number();
return phoneNumber;
}

Método para obtener la tarjeta SIM en serie.

public static String getSimSerialNumber(Context context) {
TelephonyManager phoneManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber = phoneManager.getSimSerialNumber();
return phoneNumber;
}

Si hay una forma de comprobar explícitamente lapresencia de una tarjeta SIM nueva / faltante, no estoy seguro de qué es. El método que tengo arriba para obtener el número de teléfono aparentemente no es confiable en todos los operadores. Además, obtener la serie SIM solo funciona en teléfonos con tarjeta SIM.