Cómo encontrar el nombre del paquete que se ha desinstalado al usar Intent.ACTION_PACKAGE_REMOVED
Tengo una aplicación que mantiene un registro de las aplicaciones desarrolladas internamente instaladas en el dispositivo. Tras la instalación, se invoca un receptor de difusión para Intent.PACKAGE_ADDED y registra el nombre del paquete con el siguiente código:
public class NewInstallReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationInstalled(packages);
}
}
El problema al que me enfrento es cuando uso un receptor de difusión para Intent.PACKAGE_REMOVED, toda referencia al paquete a través del Id. Único (UID) vuelve con información nula (como era de esperar, dado que ya se ha desinstalado). Mientras tanto, tengo una solución temporal, pero no es muy elegante, y para la próxima versión me gustaría tener un código más limpio. Un ejemplo de cómo debería funcionar el código:
public class RemoveApplicationReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationRemoved(packages);
}
}
ara resumir, la pregunta es:
Cómo, después de eliminar un programa, ¿puedo hacer referencia al nombre del paquete en un receptor de difusión para Intent.PACKAGE_REMOVED.
Gracia