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.
- BroadcastReceiver no funciona correctamente a menos que se registre manualmente
- El modo de ahorro de energía no causa conexión de red cuando la aplicación vuelve del fondo
- Android: Cómo comprobar si el número SMS entrante existe en el teléfono de contacto en BroadcastReceiver y el bloque es el número no existe
- El receptor de difusión funciona de forma diferente en diferentes versiones de Android (4.1.1 y 4.2.2)
- Activar y desactivar un receptor de difusión
- Android - SendBroadcast Sobrecarga
- QueryBroadcastReceivers no encuentra los receptores registrados con registerReceiver
- ACTION_MY_PACKAGE_REPLACED no recibido
- ¿Es seguro iniciar un nuevo subproceso en un BroadcastReceiver?
- No se puede registrar el receptor dinámicamente
- DetectedActivityFence no desencadenar?
- Actividad ha filtrado IntentReceiver
- Descartar la notificación de Android en curso mediante el botón de acción sin abrir la aplicación
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(); } }