Intenté usar el código de muestra en este enlace, pero parece anticuado y no funcionó. Entonces, ¿qué cambios debo hacer y en qué archivos hacer que mi aplicación se inicie automáticamente cuando Android termine de iniciarse?
android
broadcastreceiver
startup
Poojan
fuente
fuente
Intent.ACTION_BOOT_COMPLETED
lugar de codificar la cadena en su receptor. Además, debe usar el nuevoIntent(context, MySystemService.class)
constructor al crear la intención.Multiple markers at this line - BroadcastReceiver cannot be resolved to a type - The public type StartMyServiceAtBootReceiver must be defined in its own file
en lapublic class
línea. ¿Algunas ideas?Así es como hacer que una actividad comience a ejecutarse después de reiniciar el dispositivo Android:
Inserte este código en su
AndroidManifest.xml
archivo, dentro del<application>
elemento ( no dentro del<activity>
elemento):Luego cree una nueva clase
yourActivityRunOnStartup
(que coincida con laandroid:name
especificada para el<receiver>
elemento en el manifiesto):Nota: La llamada
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
es importante porque la actividad se inicia desde un contexto externo a la actividad. Sin esto, la actividad no comenzará.Además, los valores
android:enabled
,android:exported
yandroid:permission
en la<receiver>
etiqueta no parecen obligatoria. La aplicación recibe el evento sin estos valores. Vea el ejemplo aquí .fuente
Application
? Tal vez dentroonCreate()
?onReceive()
de unBroadcastReceiver
Escuche ACTION_BOOT_COMPLETE y haga lo que necesite desde allí. Hay un fragmento de código aquí.
Actualizar:
El enlace original en la respuesta está inactivo, por lo que, según los comentarios, aquí está el código vinculado, porque nadie extrañará el código cuando los enlaces estén inactivos.
En AndroidManifest.xml (parte de la aplicación):
...
...
Fuente: https://web.archive.org/web/20150520124552/http://www.androidsnippets.com/autostart-an-application-at-bootup
fuente
Además, puede usar una aplicación como AutoStart si no desea modificar el código, para iniciar una aplicación de Android al inicio: AutoStart - Sin root
fuente
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 el BroadcastReceiver fue notificado después de reinicios posteriores.
fuente
Me gustaría agregar un punto en esta pregunta que tuve que enfrentar por un par de días. Intenté todas las respuestas pero no me funcionaban. Si está utilizando la versión 5.1 de Android, cambie esta configuración.
Si está utilizando la versión 5.1 de Android, entonces debe desactivar (Restringir para iniciar) desde la configuración de la aplicación.
configuración> aplicación> su aplicación> Restringir para iniciar (desmarcar)
fuente
Otro enfoque es usar en
android.intent.action.USER_PRESENT
lugar deandroid.intent.action.BOOT_COMPLETED
evitar ralentizaciones durante el proceso de arranque. Pero esto es solotrue
si el usuario ha habilitado la pantalla de bloqueo; de lo contrario, esta intención nunca se transmite.Blog de referencia: el problema con la intención ACTION_USER_PRESENT de Android
fuente