Ho un'applicazione che tiene un registro delle applicazioni sviluppate internamente installate sul dispositivo. Al momento dell'installazione di un ricevitore broadcast per Intent.PACKAGE_ADDED viene richiamato e registra il nome del pacchetto utilizzando il seguente codice:Come trovare il nome del pacchetto che è stato disinstallato quando si utilizza Intent.ACTION_PACKAGE_REMOVED
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);
}
}
Il problema che sto affrontando è quando si utilizza un ricevitore di trasmissione per Intent.PACKAGE_REMOVED, ogni riferimento al pacchetto tramite l'ID univoco (UID) ritorna con informazioni null (come ci si aspetterebbe, dato che è già stato disinstallato). Nel frattempo ho una soluzione temporanea, ma non è molto elegante, e per la prossima versione mi piacerebbe avere un codice più pulito. Un esempio di come il codice dovrebbe funzionare:
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);
}
}
Quindi, per ricapitolare, la domanda è:
Come, dopo un programma è stato rimosso, posso fare riferimento il nome del pacchetto in un ricevitore di trasmissione per Intent. PACKAGE_REMOVED.
Grazie
Sto ottenendo anche null da getPackagesForUid (uid). Quello che voglio è ottenere l'elenco di tutti i pacchetti installati per l'utente corrente. Qualcuno può fornire qualche input? – Pratik