Recepción de paquetes de instalación y desinstalación de eventos

Estoy tratando de detectar cuándo se está instalando una nueva aplicación, pero sólo si mi aplicación se está ejecutando. Me las arreglé para detectar la instalación de la aplicación haciendo un BroadcastReceiver y activándolo dentro del archivo AndroidManifest pero esto detectará aunque mi aplicación esté cerrada. Es por eso que necesito activar y desactivar manualmente el broadcastreveiver. Para hacer esto tengo este código:

br = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i("Enter", "Enters here"); Toast.makeText(context, "App Installed!!!!.", Toast.LENGTH_LONG).show(); } }; IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL); registerReceiver(br, intentFilter); 

Esto debe hacer un brindis cuando se instala una nueva aplicación. Pero lamentablemente no. No entra en el método onReceive. Cualquier ayuda es apreciada.

Intenté registrar el BroadcastReceiver en archivo de manifiesto o en código java. Pero ambos métodos fallaron al activar el método onReceive() . Después de google este problema, encontré una solución para ambos métodos de otro hilo en SO: Android Notification App

En el archivo de manifiesto:

 <receiver android:name=".YourReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_INSTALL" /> <action android:name="android.intent.action.PACKAGE_ADDED" /> <data android:scheme="package"/> </intent-filter> </receiver> 

En código java:

 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL); intentFilter.addDataScheme("package"); registerReceiver(br, intentFilter); 

Esto debería funcionar para usted.

Sólo para añadir a la respuesta de Huang anterior, aquí es cómo obtener el nombre del paquete de la aplicación recién instalado:

 public class YourReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String packageName=intent.getData().getEncodedSchemeSpecificPart(); } } 
  • Direccionamiento explícito de una intención a un receptor de difusión dinámica
  • ¿Cuándo cancelar el registro de Broadcast Receiver registrado en onCreate?
  • Android: Consulta del registro de llamadas después de que se haya actualizado una vez que termina una llamada
  • Cómo desbloquear la pantalla cuando se llama BroadcastReceiver?
  • Haga clic en la notificación GCM para no abrir la actividad deseada en Android Kitkat
  • ¿Por qué mi Broadcast Receiver no recibe las acciones de difusión del sistema?
  • Por qué algunos receptores de radiodifusión sólo pueden registrarse a través de Code o AndroidManifest
  • La notificación deleteIntent no funciona
  • Error del receptor no registrado cuando se llama a la función onDestroy
  • Detectar la desconexión desde un punto de acceso WiFi
  • Receptor de difusión para detectar el inicio de la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.