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

Estoy intentando detectar cuándo se está instalando una nueva aplicación, pero solo si mi aplicación se está ejecutando. Logré detectar la instalación de la aplicación haciendo un BroadcastReceiver y activándolo dentro del archivo AndroidManifest, pero esto detectará incluso si mi aplicación está cerrada. Por eso 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 debería hacer un brindis cuando se instala una nueva aplicación. Pero lamentablemente no lo hace. No entra en el método onReceive. Cualquier ayuda es apreciada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta