6

Tengo una aplicación sin actividad de iniciador que funciona correctamente desde Android 1.5 a Android 2.3.4. Lo inicio mi receptor de difusión. Sin embargo, en Honeycomb (Motorola Xoom), mi receptor de emisión no funciona en absoluto (no capta ninguna intención). Si añado la actividad lanzador a mi manifiesta:Android - La aplicación [Xoom/Honeycomb] sin actividad LAUNCHER no funciona

<activity android:label="@string/app_name" android:name="com.myapp.MainActivity"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 
</activity> 

Entonces mi aplicación funciona correctamente (receptor de radiodifusión atrapa todos los intentos necesarios y comienza mis servicios).

¡Estaría muy agradecido por la ayuda!

+0

¿Dónde se define su receptor de difusión? –

+0

@Jon Willis: el receptor se define en manifiesto. CommonsWare y Gaurav han explicado el problema. ¡Gracias por tu ayuda! – Kacper86

Respuesta

10

¿Estás ejecutando Honeycomb 3.1 o superior? En caso afirmativo, eche un vistazo here. Cuando su aplicación está instalada, está en estado detenido. Cuando la aplicación se inicia por primera vez, se mueve fuera del estado detenido.

Una aplicación en estado detenido no se iniciará por todos los intentos de transmisión. El remitente del intento de transmisión debe especificar el indicador Intent.FLAG_INCLUDE_STOPPED_PACKAGES si también desea iniciar aplicaciones detenidas.

Intent intent = new Intent(MY_INTENT_ACTION); 
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
sendBroadcast(intent); 

Si no puede cambiar el código que envía la intención, la mejor opción sería la de mantener la actividad lanzador. Cada vez que el usuario inicie su aplicación después de la instalación, se moverá fuera del estado detenido y comenzará a recibir transmisiones.

Tenga en cuenta que el usuario puede mover su aplicación de nuevo al estado detenido desde Administrar aplicaciones en la configuración del dispositivo.

+0

¡Muchas gracias por su rápida respuesta! – Kacper86

4

En Android 3.1 y superior, BroadcastReceivers no se invocará hasta que el usuario haya iniciado la aplicación al menos una vez por algún otro medio, como el inicio de una actividad.

Dado que los usuarios tienden a confundirse mucho con las aplicaciones que no tienen una actividad, en realidad debería haber tenido una actividad, en primer lugar, para obtener ayuda en línea. Con Android 3.1, eso es aún más importante.

+0

¡Muchas gracias por su rápida respuesta! – Kacper86

Cuestiones relacionadas