¿Cómo inicio mi aplicación al inicio?

Intenté usar el código de muestra en este enlace, pero parece desactualizado y no funcionó. Entonces, ¿qué cambios debo hacer y a qué archivos hacer que mi aplicación se inicie automáticamente cuando Android termine de arrancar?

Primero, necesitas el permiso en tu AndroidManifest.xml :

  

Además, en su AndroidManifest.xml , defina su servicio y escuche la acción BOOT_COMPLETED :

           

Luego debe definir el receptor que recibirá la acción BOOT_COMPLETED e iniciar su servicio.

 public class StartMyServiceAtBootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { Intent serviceIntent = new Intent(context, MyService.class); context.startService(serviceIntent); } } } 

Y ahora su servicio debería estar funcionando cuando el teléfono se inicie.

Esta es la forma de hacer que una actividad comience a ejecutarse después de reiniciar el dispositivo Android:

Inserta este código en tu archivo AndroidManifest.xml , dentro del elemento ( no dentro del elemento ):

         

Luego crea una nueva clase yourActivityRunOnStartup (que coincida con el android:name especificado para el elemento en el manifiesto):

 package yourpackage; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class yourActivityRunOnStartup extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent i = new Intent(context, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } 

Nota: La llamada i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); es importante porque la actividad se inicia desde un contexto fuera de la actividad. Sin esto, la actividad no comenzará.

Además, los valores android:enabled , android:exported y android:permission en la etiqueta no parece obligatorio. La aplicación recibe el evento sin estos valores. Vea el ejemplo aquí .

Escucha ACTION_BOOT_COMPLETE y haz lo que necesites a partir de ahí. Hay un fragmento de código aquí.

Actualizar:

El enlace original en la respuesta está desactivado, por lo que según los comentarios, aquí está el código vinculado, porque nadie se extrañará cuando los enlaces estén caídos.

En AndroidManifest.xml (parte de la aplicación):

       

  

 public class BootUpReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, MyActivity.class); //MyActivity can be anything which you want to start on bootup... i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } 

Fuente: https://web.archive.org/web/20150520124552/http://www.androidsnippets.com/autostart-an-application-at-bootup

Además, puede utilizar una aplicación como AutoStart si no desea modificar el código, para iniciar una aplicación de Android al inicio: AutoStart – Sin raíz

La solución de Sean no funcionó para mí inicialmente (Android 4.2.2). Tuve que agregar una actividad ficticia al mismo proyecto de Android y ejecutar la actividad manualmente en el dispositivo al menos una vez. Luego, la solución de Sean comenzó a funcionar y se notificó a BroadcastReceiver después de los reinicios posteriores.

captura de pantalla

Me gustaría agregar un punto en esta pregunta que estaba enfrentando por un par de días. Probé todas las respuestas, pero esas no me funcionaron. Si está utilizando la versión 5.1 de Android, cambie esta configuración.

Si está utilizando la versión 5.1 de Android, tiene que desactivar (Restringir para iniciar) desde la configuración de la aplicación.

configuración> aplicación> su aplicación> Restringir para iniciar (desmarcar)

Otro enfoque es usar android.intent.action.USER_PRESENT lugar de android.intent.action.BOOT_COMPLETED para evitar desaceleraciones durante el proceso de arranque. Pero esto solo es true si el usuario ha activado la pantalla de locking; de lo contrario, esta intención nunca se transmite.

Blog de referencia: el problema con la intención de ACTION_USER_PRESENT de Android