PACKAGE_ADDED BroadcastReceiver no funciona
Tengo un receptor de radiodifusión registrado en Manifest:
<application ...> <receiver android:name="com.some.pkg.NewAppReceiver" > <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> </intent-filter> </receiver> </appcication>
Y el receptor:
- Android: Detectar cuando la tarjeta SD montada como unidad de disco a un equipo
- Cómo obtener acción que la aplicación android está intentando eliminar / desinstalar desde el dispositivo
- Una forma de obtener desbloquear evento en android?
- Android: BroadcastReceiver cuando inserta / extrae el dispositivo USB en / desde un puerto USB
- ¿Por qué noftificaciones aparecen en la barra de notificación de Android por un tiempo, entonces desaparece
public class NewAppReceiver extends BroadcastReceiver { private static final String TAG = "NewAppReceiver"; @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "Intent: " + intent.getAction()); } }
Y no se recibe nada cuando instalo APK manualmente o desde el Android Market . ¿Por qué?
- Android - ¿Cómo activar un Broadcast Receiver para llamar a su método onReceive ()?
- Android: respuesta de la actividad del mercado
- Estoy recibiendo un error del receptor Broadcast como una excepción de punto nulo en el estudio de Android. Quiero recibir notificaciones de GCM
- Android Broadcast Receiver para enviar mensajes SMS?
- TIMEZONE_CHANGED intención que se recibe cada pocos segundos
- BatteryManager de Android sólo devuelve 1
- Cambio de volumen Listener: ¿Es preferible registerMediaButtonEventReceiver a onKeyDown?
- Preferencias compartidas dentro de broadcastreceiver
¿Has ejecutado la aplicación que contiene este broadcastReceiver antes de instalar las otras aplicaciones?
A partir de alguna versión de API, broadcastReceivers no funcionará hasta que ejecutes la aplicación. Poner una actividad y ejecutarla.
Además, no olvide añadir lo siguiente al broadcastReceiver:
<data android:scheme="package" />
Dado que android.intent.action.PACKAGE_ADDED es un intento del sistema (tenga en cuenta que su propia aplicación no lo recibirá en su instalación), su BroadcastReceiver recibirá mensajes de fuentes externas a su aplicación. Por lo tanto, compruebe que NO puso: android: exportado = "false"
También puede ser necesario agregar:
<data android:scheme="package" />
Por lo tanto, su BroadcastReceiver en su AndroidManifest.xml debe verse así:
<application ...> <receiver android:name=".NewAppReceiver" android:exported="true"> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <data android:scheme="package" /> </intent-filter> </receiver> </appcication>
Si todavía no funciona, puede intentar poner una prioridad más alta, como: android: priority = "1000"
Echa un vistazo a: http://developer.android.com/guide/topics/manifest/receiver-element.html
¿Está intentando recibir la intención en la aplicación que está instalando? La documentación de ACTION_PACKAGE_ADDED dice:
Tenga en cuenta que el paquete recién instalado no recibe esta transmisión.
Otra posibilidad es que esta intención no se puede entregar a los componentes registrados a través del manifiesto, pero sólo manualmente (como se describe en una respuesta de Mark Murphy a la pregunta de desbordamiento de pila No se pueden recibir transmisiones para intentos PACKAGE ).
Si intenta recibir algún otro paquete, debe ser trabajado.
(Como @Savvas anotado) Si intenta recibir la adición de su propio paquete, no puede recibirlo. Incluso si su receptor de difusión tiene action.PACKAGE_ADDED
, el método onReceive
del receptor no se activa .
En este caso lo mejor es guardar estos datos. Mediante el uso sharedPreferences
, agregue una clave como "appIsWorkedBefore", y en el método onCreate de su lanzador Activity, establezca esta variable como "true". Y puedes hacer tus obras con respecto a este Booleano.
- ¿Qué está causando el mensaje "Habilitar myanmar Zawgyi convertidor"
- Cómo borrar el edittext cuando onclick en el botón