So finden Sie den Paketnamen, der bei der Verwendung von Intent.ACTION_PACKAGE_REMOVED deinstalliert wurde

Ich habe eine Anwendung, die ein Protokoll der intern entwickelten Anwendungen auf dem Gerät installiert hält. Bei der Installation wird ein Broadcast-Empfänger für Intent.PACKAGE_ADDED aufgerufen und zeichnet den Paketnamen mit folgendem Code auf:

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); } } 

Das Problem, mit dem ich konfrontiert bin, ist bei der Verwendung eines Broadcast-Empfängers für Intent.PACKAGE_REMOVED, alle Verweis auf das Paket über die eindeutige Id (UID) kommt mit Null-Informationen zurück (wie man es erwarten würde, da es bereits deinstalliert wurde). Ich habe eine vorübergehende Lösung für die Zwischenzeit, aber es ist nicht sehr elegant, und für die nächste Version möchte ich einen saubereren Code haben. Ein Beispiel dafür, wie der Code funktionieren sollte:

 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); } } 

Um sich zu erinnern, ist die Frage:

Wie kann ich nach dem Entfernen eines Programms den Paketnamen in einem Broadcast-Empfänger für Intent.PACKAGE_REMOVED verweisen.

Vielen Dank

Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.