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

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

Primero, necesitas el permiso en tu AndroidManifest.xml :

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

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

 <service android:name=".MyService" android:label="My Service"> <intent-filter> <action android:name="com.myapp.MyService" /> </intent-filter> </service> <receiver android:name=".receiver.StartMyServiceAtBootReceiver" android:label="StartMyServiceAtBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 

A continuación, debe definir el receptor que obtendrá 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 debe estar funcionando cuando el teléfono se enciende.

Esta es la forma de hacer que una actividad se inicie después de reiniciar el dispositivo Android:

Inserte este código en el archivo AndroidManifest.xml , dentro del elemento <application> ( no dentro del elemento <activity> ):

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <receiver android:enabled="true" android:exported="true" android:name="yourpackage.yourActivityRunOnStartup" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

A continuación, cree una nueva clase yourActivityRunOnStartup (que coincida con el android:name especificado para el elemento <receiver> 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 se iniciará.

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

Escucha el ACTION_BOOT_COMPLETE y haz lo que necesites desde allí. Hay un fragmento de código aquí.

Actualizar:

El enlace original en la respuesta está abajo, por lo que basado en los comentarios, aquí está vinculado código, porque nadie se perdería el código cuando los enlaces están hacia abajo.

En AndroidManifest.xml (application-part):

 <receiver android:enabled="true" android:name=".BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

 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, puedes usar una aplicación como AutoStart si no quieres modificar el código, para iniciar una aplicación Android en el inicio: https://play.google.com/store/apps/details?id=com.autostart

La solución de Sean no funcionó para mí inicialmente (Android 4.2.2). Tuve que añadir una actividad simulada para el mismo proyecto de Android y ejecutar la actividad manualmente en el dispositivo al menos una vez. Entonces la solución del Sean comenzó a trabajar y el BroadcastReceiver fue notificado después de reinicios subsecuentes.

Otro enfoque es usar android.intent.action.USER_PRESENT en lugar de android.intent.action.BOOT_COMPLETED para evitar bajadas durante el proceso de arranque. Pero esto sólo es cierto si el usuario ha habilitado la pantalla de bloqueo – de lo contrario esta intención nunca se transmite.

https://funwithdc.wordpress.com/2012/02/12/the-problem-with-androids-action_user_present-intent/

  • Aplicación de inicio automático durante el inicio del teléfono
  • Cómo deshabilitar la aplicación nativa de Facebook para el inicio de sesión de usuario
  • ¿Cuál es el mejor enfoque para autostarting una aplicación de Android en un dispositivo dedicado?
  • Init.rc no iniciar mi servicio en el primer arranque después del flash
  • Crear un menú después de un evento de clic largo en una vista de lista
  • Alternativa a addPreferencesFromResource ya que está obsoleta
  • Android AutoCompleteTextView con correo electrónico no
  • Android 2.2: cómo hacer que una aplicación se ejecute automáticamente en el inicio y cómo hacer que una aplicación inicie otra aplicación
  • Crear carpeta en la pantalla de inicio mediante programación?
  • Android - Servicio de inicio en el inicio
  • Pantalla blanca después de Splash en android - ionic 2
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.