1 votos

¿Cómo hacer que el sistema operativo lance aplicaciones en el momento del arranque?

Estoy ejecutando Android 4.3 Jelly Bean en un Samsung Galaxy SIII.

Estoy intentando averiguar cómo configurar aplicaciones como Skype para que se inicien automáticamente una vez que el sistema haya pasado por el proceso de arranque, haya terminado de arrancar y se haya puesto en marcha. Me gustaría poder hacer esto a través de una aplicación que no requiera que mi dispositivo esté rooteado, si es posible. Cuando miro la información relacionada con Skype en el Administrador de aplicaciones predeterminado, puedo ver que la aplicación de Skype hace uso del permiso "ejecutar al inicio", lo que significa que debería ser posible configurar esta aplicación para que se ejecute al inicio, pero no pude encontrar una casilla de verificación para hacerlo en esta pantalla, ni desde la configuración de la aplicación de Skype. Una situación similar puede ocurrir con otras aplicaciones también.

Este puesto trata de evitar que las aplicaciones se inicien, y menciona útiles aplicaciones de terceros como Gestor de ejecución automática que parece que se ocupa principalmente de bloquear las aplicaciones para que no se inicien y se reinicien una vez muertas, o al menos esto es lo que deduzco de la descripción de la aplicación en la play store, y Autostarts que gestiona qué aplicaciones son activadas por eventos.

Así que, aquí están mis preguntas:

  • ¿Por qué no hay una aplicación nativa preinstalada en Android para controlar qué aplicaciones se inician por defecto y cuáles no?

  • Si skype requiere el permiso de "ejecución al inicio", y no hay ningún lugar en el sistema operativo o en la aplicación para configurar dicha aplicación para que se inicie automáticamente, entonces ¿qué consigue este permiso?

Gracias.

3voto

Izzy Puntos 45544

Realmente sería bueno tener algún gestor de inicio que se incluya en el sistema, que permita al usuario decidir qué iniciar y qué no. Pero ese no es el caso, funciona un poco diferente:

Las aplicaciones con el permiso de "ejecución al inicio" pueden registrar un "oyente" para el BOOT_COMPLETED que el sistema siempre emite en ese evento. De este modo, se les notifica el evento y pueden decidir realizar alguna acción. Eso podría ser iniciar algún servicio en segundo plano que siga funcionando - pero también podrían hacer algo pequeño y luego salir de nuevo.

En mi opinión, Skype tiene una opción para iniciar la sesión automáticamente después del arranque, de modo que estés disponible para las llamadas entrantes. AFAIR que es incluso el comportamiento por defecto de la aplicación. Si no hay un servicio en segundo plano que se ejecute para eso, podría registrarse para algún tipo de mensajería en la nube, lo que de nuevo lo "despertaría" para ocuparse de las llamadas entrantes. De esta manera la aplicación no tendría necesidad de ejecutarse permanentemente en segundo plano. De hecho, la aplicación también declara el com.google.android.c2dm.permission.RECEIVE (C2DM significa "Cloud 2 Device Messaging", que ahora es GCM = Google Cloud Messaging), así que esta podría ser la explicación.


ACTUALIZACIÓN:

Andrew T. confirmó esto en los comentarios:

Finalmente comprobé el manifiesto Android de Skype abriendo su archivo APK ( base.apk ), y de hecho hay com.skype.android.push.DeviceBootReceiver con filtro de intención android.intent.action.BOOT_COMPLETED . Sin embargo, no he investigado lo que hace. Además, me olvidé de que el receptor de transmisión no aparece en la lista de procesos en ejecución, como mencionó John (puedo confirmar esto siendo un desarrollador). Así que, estás en lo cierto en tu suposición :)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X