Aplicación de inicio automático después del arranque completado en Android
Quiero hacer una aplicación que tiene opción de inicio automático en su configuración. He hecho la actividad de las Configuraciones en mi aplicación que se deriva de PreferenceActivity y da CheckBoxPreference para la opción de inicio automático. Si la opción de inicio automático está habilitada, mi aplicación debería iniciarse cuando se complete el arranque del teléfono. Y si la opción de arranque automático está desactivada, entonces no debería iniciarse al arrancar.
Para lograr esto he implementado la clase derivada de BroadcastReceiver que recibe BOOT_COMPLETED intención, declarar receptor en AndroidManifest.xml y también dar permiso en AndroidManifest.xml.
- ¿Cómo distinguir el estado de encendido / apagado de la pantalla durante la llamada entrante?
- Cómo terminar una actividad de un receptor de difusión
- No se puede instanciar el receptor, java.lang.IllegalAccessException: acceso a la clase no permitido
- TIMEZONE_CHANGED intención que se recibe cada pocos segundos
- Repetir alarmas cada lunes en Android usig AlarmManager / BroadcastReceiver
En la aplicación también hay una clase derivada de Application y start service también del método onCreate de la clase derivada de la aplicación. Si declaro el receptor en AndroidManifest.xml entonces después de arrancar completado onCreate de mi aplicación llamada y después de que onReceive método de BroadcastReceiver llamado.
Ahora el problema es que mi aplicación se inicia en el arranque completado cada vez si el inicio automático está habilitado o deshabilitado. ¿Es posible no iniciar la aplicación cuando se desactiva el inicio automático?
- Determinar la entrada específica del cargador
- Cómo enviar BroadCast desde una aplicación a otra aplicación
- ¿Puedo recibir emisiones de iOS como Android?
- ¿Cómo saber en BroadcastReceiver si la aplicación se está ejecutando en primer plano?
- Enviar ArrayList <Object> de BroadCastReceiver a Actividad
- Inicio del servicio en el arranque sin actividad
- Administrador de alarmas programado no funciona Android
- Intentando iniciar un servicio de inicio en Android
Puede usar la preferencia compartida para almacenar un valor booleano para isAutoStartEnabled
y comprobar este valor en BroadcastReciver, isAutoStartEnabled
una intención sólo si es verdadera.
En su caso, el problema no es si recibe la emisión, sino quién recibe la emisión. La mejor de las suertes..
Espero que ayude..
Creo que desde Android 3.1 en adelante su BroadcastReceiver que recibe BOOT_COMPLETED
intención su no va a funcionar. El usuario tiene que activar la aplicación interactuando con ella.
Por lo tanto, después de arrancar el dispositivo de toda la aplicación de terceros están mintiendo como una parada.
Y para actualmente su aplicación puede utilizar SharedPreferences
para Auto-Start your application ..
ACTUALIZACIÓN: ( Sólo para la versión de Android por debajo de 3.1 para la versión superior funciona, pero usted tiene que interactuar con el usuario después de la aplicación de arranque completado en el dispositivo )
Necesitas usar un BroadcastReceiver
con la intención de android.intent.action.BOOT_COMPLETED
.
Añada el siguiente archivo de manifiesto:
<receiver android:name="App_Receiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
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 } }
Tienes que agregar el uso-permiso 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
Esto funciona para mí:
public class BootCompleteReceiver extends BroadcastReceiver { public static final String PREFS_NAME = "MyPrefsFile"; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub 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); } } }
}
- El lienzo no dibuja en Vista personalizada
- Android Facebook obtener toda la información sobre el perfil