Estoy ejecutando Android 4.3 Jelly Bean en un Samsung Galaxy SIII.
Estoy tratando de descubrir 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 iniciado. 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 observo la información relacionada con Skype en el Administrador de aplicaciones predeterminado, puedo ver que la aplicación de Skype utiliza el 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 para hacerlo en esta pantalla, ni desde la configuración de la aplicación Skype. Una situación similar también puede ocurrir con otras aplicaciones.
Esta publicación trata sobre cómo evitar que las aplicaciones se inicien y menciona aplicaciones útiles de terceros, como Autorun Manager , que parece estar muy preocupado por bloquear el inicio y el reinicio de las aplicaciones una vez que se eliminan, o al menos esto es lo que deduzco de la descripción de la aplicación. en Play Store, y Autostarts , que activa, que administra qué aplicaciones se activan por eventos.
Asi que aqui están mis preguntas:
¿Por qué no hay una aplicación de administrador de inicio nativa preinstalada en Android para controlar qué aplicaciones se inician de manera predeterminada y cuáles no?
Si skype requiere el permiso "ejecutar al inicio", y no hay lugar en el sistema operativo o en la aplicación para configurar dicha aplicación para que se inicie automáticamente, ¿qué logra este permiso?
Gracias.
Realmente sería bueno tener un administrador de inicio que se envíe con el sistema, lo que le permite al usuario decidir qué iniciar y qué no. Pero ese no es el caso, funciona un poco diferente:
Las aplicaciones con el permiso "ejecutar al inicio" pueden registrar un "oyente" para la BOOT_COMPLETED
transmisión, que el sistema siempre emite en ese evento. De esta manera, se les notifica ese evento y pueden decidir realizar alguna acción. Eso podría estar iniciando algún servicio en segundo plano que sigue ejecutándose, pero también podrían hacer algo pequeño y luego salir de nuevo.
En mi humilde opinión, Skype tiene una opción para iniciar sesión automáticamente después del arranque, por lo que está disponible para las llamadas entrantes. AFAIR ese es incluso el comportamiento predeterminado de la aplicación. Si no hay un servicio en segundo plano ejecutándose para eso, podría registrarse para algunos mensajes en la nube, lo que nuevamente lo "activaría" para atender las llamadas entrantes. De esa manera, la aplicación no tenía necesidad de ejecutarse permanentemente en segundo plano. De hecho, la aplicación también declara el com.google.android.c2dm.permission.RECEIVE
permiso (C2DM significa "Cloud 2 Device Messaging", que ahora es GCM = Google Cloud Messaging), por lo que esta podría ser la explicación.
ACTUALIZAR:
Andrew T. confirmó esto en los comentarios:
Finalmente verifiqué el manifiesto de Android de Skype abriendo su archivo APK (
base.apk
), y de hecho lo haycom.skype.android.push.DeviceBootReceiver
con el filtro de intencionesandroid.intent.action.BOOT_COMPLETED
. Sin embargo, no investigué lo que está haciendo. Además, olvidé que el receptor de transmisión no figura en el proceso de ejecución como mencionó John (puedo confirmar que se trata de un desarrollador). Entonces, tienes razón en tu suposición :)
com.google.android.c2dm.permission.RECEIVE
. Dado que Skype no figura en la lista, RUNNING
supongo que cuando no hay un proceso o servicio ejecutándose en segundo plano, sino que el permiso "ejecutar al inicio" (android.permission.RECEIVE_BOOT_COMPLETED) permite a Skype registrar un receptor de transmisión para C2DM, y cuando el mensaje C2DM llega desde el servidor, el receptor de transmisión inicia la actividad de Skype.RUNNING
en el Administrador de aplicaciones, ya que estos son iniciados por otro servicio del sistema (cuyo nombre no recuerdo en este momento). Corrígeme si estoy equivocado. Gracias.base.apk
), y de hecho lo hay com.skype.android.push.DeviceBootReceiver
con el filtro de intenciones android.intent.action.BOOT_COMPLETED
. Sin embargo, no investigué lo que está haciendo. Además, olvidé que el receptor de transmisión no figura en el proceso de ejecución como mencionó John (puedo confirmar que se trata de un desarrollador). Entonces, tienes razón en tu suposición :)
andres t
Juan Sonderson
Juan Sonderson
andres t
Juan Sonderson
Joaquín Iurchuk
Juan Sonderson