¿Cómo crear una aplicación Android con sólo 1 broadcastreceiver?
Estoy tratando de crear una aplicación en Android que se compone de sólo 1 broadcastreceiver (y nada más).
El broadcastreceiver debe simplemente capturar la emisión (por ejemplo mensaje SMS recibido, registrar la información y terminar). Sin embargo, me di cuenta de que la difusión no es capturado por el receptor, a menos que indique que tengo actividad principal como el siguiente AndroidManifest.xml mostrará:
- BroadcastReceiver onReceive timeout
- Android - ¿Cómo activar un Broadcast Receiver para llamar a su método onReceive ()?
- Android: ¿por qué se detuvo la notificación de alarma después de reiniciar el sistema
- ¿Utilizar un receptor de difusión para iniciar AlarmManager en Android?
- Android: validar la identidad del remitente de la intención
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="com.myapp.MyBroadcastReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> <activity android:name="com.myapp.MainActivity" android:label="@string/activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
Ni siquiera tengo que tener una clase de actividad dentro de la aplicación. Además, si elimino android.intent.category.LAUNCHER o android.intent.action.MAIN en el filtro de intenciones, tampoco lo hace. El comportamiento es el mismo en mi teléfono y el emulador que están ejecutando android 4.2
Mi clase Broadcastreceiver se ve así:
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,intent.getAction(),Toast.LENGTH_SHORT).show(); } }
¿No es posible tener una aplicación con sólo un broadcastreceiver?
- ¿Qué es más eficiente Broadcast Receiver o Handler?
- Falta una llamada para cancelar el registro del receptor HapticFeedbackBroadcastReceiver que nunca registré
- GCM no recibe el mensaje de abajo Android 4
- ¿Cómo despertar android y mostrar la actividad?
- Abra la actividad haciendo clic en la notificación push de Parse
- Servicios Roboeléctricos y de Intención
- Transmitir datos de la clase BroadcastReceiver a una actividad de Android
- Suprimir / bloquear BroadcastReceiver en otra aplicación
A partir de Android 3.1 (API 12), la aplicación no puede recibir transmisiones hasta que un componente de interfaz de usuario de una aplicación (una actividad) haya sido abierto manualmente por el usuario al menos una vez. Incluso si la fuerza del usuario detiene la aplicación, lo mismo se aplica.
Referencia: http://developer.android.com/about/versions/android-3.1.html#launchcontrols
¿No deberías hacer un servicio en vez de una aplicación? (Nunca he creado un servicio, pero creo que debería ser más apropiado en su caso)
- Android: borra todas las actividades del backstack y termina la actividad actual
- Comprimir vídeos usando android MediaCodec api