Android: Eliminación del tiempo de ejecución de la tarjeta SIM para HTC One V

Quiero una notificación en tiempo de ejecución eliminación de la tarjeta SIM del teléfono android.

Mi aplicación se ejecuta en GingerBread mientras no se está ejecutando en HTC One V que se ejecuta en ICS y superiores. Aquí está mi código:

1) Clase del receptor

package com.TestIt; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class SimEventReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent systemIntent) { // TODO Auto-generated method stub Intent intent=new Intent(context, SimService.class); context.startService(intent); } } 

2) Clase de servicio

 package com.TestIt; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.telephony.TelephonyManager; import android.util.Log; import android.widget.Toast; public class SimService extends Service { TelephonyManager tele; @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.d("Kanishk", "In Service OnCreate"); int simState = tele.getSimState(); switch (simState) { case TelephonyManager.SIM_STATE_ABSENT: Log.d("kanishk", "onCreate1"); TestItActivity.simState(this); break; case TelephonyManager.SIM_STATE_READY: Log.d("kanishk", "onCreate2"); Toast.makeText(this, "Now Sim is ok", Toast.LENGTH_LONG).show(); break; case TelephonyManager.SIM_STATE_UNKNOWN: Log.d("kanishk", "onCreate3"); Toast.makeText(this, "not Known", Toast.LENGTH_LONG).show(); break; } } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } } 

3) Paquete de actividades com.TestIt;

 import android.R; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; public class TestItActivity extends Activity { /** Called when the activity is first created. */ private static final String tag = "Activity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(tag, "OnCreate"); setContentView(R.layout.main); } public static void simState() { Log.d(tag, "Sim State"); } } 

4) Manifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.systemEvent" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".SystemEventActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".BroadCastReceiverS" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <service android:name=".MyService" > </service> </application> </manifest> 

A partir de Android 3.1, todas las aplicaciones se establecen en STOPPED STATE cuando se instala. La aplicación se saca del STOPPED STATE cuando el usuario ejecuta la aplicación por primera vez. Una aplicación también se vuelve a poner en STOPPED STATE cuando el usuario utiliza el gestor de aplicaciones para detenerlo manualmente.

Dado que su aplicación contiene sólo un componente de Service y un componente BroadcastReceiver , obviamente nunca es iniciado explícitamente por el usuario (no hay Activity para el usuario para iniciar). Por lo tanto, su aplicación nunca se saca del estado detenido.

Su BroadcastReceiver nunca se ejecutará porque el sistema no envía Intent difusión a aplicaciones en STATE STOPPED .

Lea más sobre esto aquí . Consulte la sección "Iniciar controles en aplicaciones detenidas" . Tenga en cuenta particularmente esta cita:

Tenga en cuenta que el sistema agrega FLAG_EXCLUDE_STOPPED_PACKAGES a todas las intenciones de difusión. Esto lo hace para evitar que las emisiones de los servicios de fondo inicien inadvertidamente o innecesariamente el lanzamiento de componentes de aplicaciones detenidas. Un servicio o una aplicación de fondo puede anular este comportamiento agregando el indicador FLAG_INCLUDE_STOPPED_PACKAGES a las intenciones de difusión que deberían permitir activar las aplicaciones detenidas.

Las aplicaciones se encuentran en un estado detenido cuando se instalan por primera vez pero aún no se inician y cuando son detenidas manualmente por el usuario (en Administrar aplicaciones).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.