Aplicación de inicio automático después del arranque completado en Android

Quiero hacer una aplicación que tenga la opción de inicio automático en su configuración. He realizado la actividad de configuración en mi aplicación, que se deriva de PreferenceActivity y le doy a CheckBoxPreference la opción de inicio automático. Si la opción de inicio automático está habilitada, mi aplicación debería comenzar cuando se completa el arranque del teléfono. Y si la opción de inicio automático está desactivada, entonces no debería iniciarse al inicio.

Para lograr esto, he implementado la clase derivada de BroadcastReceiver que recibe el bash BOOT_COMPLETED, declara el receptor en AndroidManifest.xml y también otorga permiso en AndroidManifest.xml.

En la aplicación también hay una clase derivada de aplicación y servicio de inicio también desde el método onCreate de clase derivada de la aplicación. Si declaro receptor en AndroidManifest.xml, después de iniciar el arranque en Crear de mi aplicación llamada y después de ese método onReceive llamado BroadcastReceiver.

Ahora el problema es que mi aplicación se inicia al arrancar cada vez que el inicio automático está habilitado o deshabilitado. ¿Es posible no iniciar la aplicación cuando el inicio automático está desactivado?

Puede usar la preferencia compartida para almacenar un valor booleano para isAutoStartEnabled , y verificar este valor en BroadcastReciver, isAutoStartEnabled un bash solo si es verdadero.

En su caso, el problema no es si usted recibe la transmisión, sino quién la recibe. La mejor de las suertes..

Espero que ayude..

Creo que desde Android 3.1 en adelante, su BroadcastReceiver que recibe el bash BOOT_COMPLETED no funciona. El usuario debe activar la aplicación interactuando con ella.

Entonces, después de iniciar el dispositivo, todas las aplicaciones de terceros mienten como una parada.

Y para su aplicación actual, puede usar SharedPreferences para SharedPreferences automáticamente su aplicación.

ACTUALIZACIÓN: ( Solo para la versión de Android debajo de 3.1 para una versión superior, funciona pero tienes que interactuar con tu aplicación una vez que hayas completado el inicio en el dispositivo )

Necesita utilizar un BroadcastReceiver con la intención android.intent.action.BOOT_COMPLETED .

Agregue lo siguiente a su archivo de manifiesto:

       

Clase App_Receiver que implementa BoradcastReciever . Implemente el método onReceive() e inicie su actividad favorita desde su aplicación.

 public void onReceive(Context context, Intent intent) { // make sure you receive "BOOT_COMPLETED" // Here isAutoStartEnabled check sharedPreferences for Auto Start flag if ( isAutoStartEnabled ) { if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))) { // Start the service or activity } } 

Debes agregar los permisos de uso android.permission.RECEIVE_BOOT_COMPLETED en tu Manifiesto.

 final SharedPreferences sharedPreferences = getSharedPreferences("Application", MODE_PRIVATE); boolean isAutoStartEnabled = sharedPreferences.getBoolean("isAutoStartEnabled", false); if ( isAutoStartEnabled ) { startActivity(new Intent()); } 

Espero que esto te ayude

El siguiente código funciona para mí:

 public class BootCompleteReceiver extends BroadcastReceiver { public static final String PREFS_NAME = "MyPrefsFile"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { Log.d("boot completed", "boot completed caught"); Boolean autoRestart = false; SharedPreferences sp = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); autoRestart = sp.getBoolean("autoRestart", false); if (autoRestart){ Log.d("boot completed", "auto restart true"); Intent i = new Intent(context, WelcomeScreen.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } }