BOOT_COMPLETED no funciona en Android
En primer lugar, sé que ha habido cientos de este tipo de pregunta, pero he estado comprobando todos por un tiempo y todavía no podía encontrar ninguna solución.
He visto esta respuesta dijo BOOT_COMPLETED no enviar a la aplicación a menos que el usuario iniciar su primera aplicación, después de Android versión 3.1 Pero todavía veo algunas aplicaciones están haciendo eso, debe haber una manera. Realmente necesito manejarlo, de lo contrario también estoy en contra de hacer algo sin la interacción del usuario.
- ¿Cómo puedo hacer algo antes de desinstalar mi aplicación para Android?
- BroadcastReceiver para ACTION_MEDIA_BUTTON no funciona
- AlarmManager no funciona cuando se cierra la aplicación
- BroadcastReceiver cómo iniciar una nueva intención
- Registrarse en la transmisión local dentro de una vista personalizada
Así que aquí está mi AndroidManifest:
<manifest ... > <!-- to be activated service on boot is completed --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- Keeps the processor from sleeping when a message is received. --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application ... > <!-- to receive data when boot completed --> <receiver android:name="myPackage.BootReceiver" android:enabled="true" android:exported="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest>
Gracias por adelantado.
Edit: No hay mucho que ver en mi broadcastreceiver, pero a quien se requiere aquí es:
package myPackage public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Utils.LogI("BootReceiver", "BootReceiver received!"); if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { // Do my stuff } } }
- Enviando la intención de BroadcastReceiver desde adb
- Los componentes de IntentReceiver no pueden enlazar servicios
- Cómo recibir una emisión cuando la aplicación se instala o se elimina
- ¿Cómo puedo enviar los datos de resultado del Receptor de Broadcast a la Actividad
- ReceiverRestrictedContext no se puede convertir en android.app.Activity
- Android - ¿Cómo obtener una vista desde el contexto?
- Android IntentService no puede instanciar clase; Sin constructor vacío
- Cómo bloquear una llamada de número móvil y recepción de mensajes en el desarrollo de aplicaciones Android?
Esto a continuación trabajó para mí
AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application> <receiver android:name=".BootCompletedReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver> <service android:name="NotifyingDailyService" > </service>
BootCompletedReceiver.class
public class BootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent arg1) { // TODO Auto-generated method stub Log.w("boot_broadcast_poc", "starting service..."); context.startService(new Intent(context, NotifyingDailyService.class)); } }
Clase de servicio
public class NotifyingDailyService extends Service { @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent pIntent, int flags, int startId) { // TODO Auto-generated method stub Toast.makeText(this, "NotifyingDailyService", Toast.LENGTH_LONG).show(); Log.i("com.example.bootbroadcastpoc","NotifyingDailyService"); return super.onStartCommand(pIntent, flags, startId); } }
Y para los dispositivos Htc, agregue com.htc.intent.action.QUICKBOOT_POWERON
<receiver android:enabled="true" android:name=".receivers.BootUpReceiver"> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.intent.action.QUICKBOOT_POWERON"/> <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/> </intent-filter> </receiver>
Algunas nuevas tabletas y dispositivos Android tienen aplicación de seguridad de forma predeterminada. Algunas veces estas aplicaciones bloquean su modo de inicio automático. Un ejemplo de esta aplicación segura es MyAsus manager. Así que puedes agregar "permitir inicio automático" a tus aplicaciones
El problema es con el dispositivo. Algunos dispositivos solo permiten que las aplicaciones internas reciban esta acción (ejemplo: Android 5.1).
Puede agregar esto a su filtro de intención como trabajo alrededor
Acción android: name = "android.intent.action.USER_PRESENT" />
Esto se activa cuando el usuario desbloquea el dispositivo.
- Carpeta de activos en Android Studio?
- ¿Cómo activar el proveedor de ubicación de red en el emulador de Android?