Cómo atrapar el sistema de difusión BOOT_COMPLETED, mi programa simplemente no funciona?
Escribí un pequeño programa para capturar el sistema de difusión BOOT_COMPLETED
, pero simplemente no funciona:
package com.alex.app.testsysreboot; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("my_tag", "system reboot completed......."); } }
Manifest.xml
- Actividad ha filtrado IntentReceiver
- Inicio del servicio desde BroadcastReceiver
- ¿Dónde anular el registro de BroadcastReceiver (en un servicio)?
- Android.net.wifi.WIFI_STATE_CHANGED no se está transmitiendo
- ¿Qué problemas de seguridad puede causar SendBroadcast y qué es un enfoque mejor?
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.alex.app.testsysreboot" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name=".MyReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> </manifest>
Cerré el AVD y luego hice clic en el botón "ejecutar" en Eclipse, y el Eclipse inició un nuevo AVD, pero después del arranque del sistema, simplemente no puedo ver el registro en el LogCat …
- BroadcastReceiver: no se puede instanciar clase; Sin constructor vacío
- SetPackage para la intención en pan de jengibre
- Tratando de tener un Receptor Broadcast sin filtro
- Android: obtener notificaciones cuando se acumulan (escucha de notificaciones)
- ¿Cómo detectar cuando el usuario activa / desactiva el estado del GPS?
- ACTION_HEADSET_PLUG demora de difusión
- Los datos de referencias de Android Market no se están poblando
- BroadcastReceiver se dispara varias veces (PROVIDERS_CHANGED_ACTION)
Bueno, he intentado esto y funciona para mí,
public class Autostart extends BroadcastReceiver { public void onReceive(Context arg0, Intent arg1) { Log.i("Autostart", "**********started************"); } }
Archivo de AndroidManifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pack.saltriver" android:versionCode="1" android:versionName="1.0" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name=".Autostart"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> </manifest>
Necesitas agregar
android:enabled="true" android:exported="true"
Y
Asegúrese de que la aplicación no está instalada en la tarjeta SD – las aplicaciones IIRC instaladas allí no reciben BOOT_COMPLETED
.
Otro punto es que los dispositivos con "Fast Boot" habilitado (como varios dispositivos HTC) (a veces?) No envían BOOT_COMPLETED
.
Desde Android 3.1+ hay más rarezas con respecto a BOOT_COMPLETED
relacionadas con "el primer inicio de una aplicación" – ver http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html
Un proyecto de muestra de trabajo con la fuente, consulte https://github.com/commonsguy/cw-advandroid/tree/master/SystemEvents/OnBoot
De http://arthurfmay.blogspot.com/2011/06/broadcastreceiver-bootcompleted-and.html
Así que en su lugar, desde Eclipse sólo entré en el Android SDK y AVD Manager (bajo el menú de la ventana) y comenzó el emulador de allí. Hice esto por supuesto después de cargar la aplicación en el emulador. Comienzo el emulador y mi BroadcastReceiver en el cargador trabaja muy bien. No había necesidad de ir a ejecutar el emulador en la línea de comandos.
Otra muestra de trabajo se puede encontrar aquí .
- ¿Dónde escribir @Override?
- Android Dx advertencia: Ignorar el atributo InnerClasses para un problema de archivo interno anónimo jar