Mam aplikację, która utrzymuje dziennik wewnętrznych aplikacji zainstalowanych na urządzeniu. Po instalacji odbiornik transmisji dla Intent.PACKAGE_ADDED jest wywoływany i rejestruje nazwę pakietu za pomocą następującego kodu:Jak znaleźć nazwę pakietu, która została odinstalowana podczas używania 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);
}
}
Problem mam skierowane jest w przypadku korzystania z odbiornika do transmisji Intent.PACKAGE_REMOVED, wszystkie odniesienia do pakietu poprzez unikalny identyfikator (UID) wraca z pustymi informacjami (Jak można się spodziewać, biorąc pod uwagę, że został już odinstalowany). Mam tymczasowe rozwiązanie w międzyczasie, ale nie jest to zbyt eleganckie, a do następnej wersji chciałbym mieć czystszy kod. Przykładem jak kod powinien działać:
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);
}
}
Przypomnę więc, pytanie brzmi:
Jak po tym, jak program został usunięty, można odwołać się do nazwy pakietu w odbiorniku transmisji dla intencyjny. PACKAGE_REMOVED.
Dzięki
Otrzymuję również wartość null z getPackagesForUid (uid). To, czego chcę, to uzyskać listę wszystkich pakietów zainstalowanych dla bieżącego użytkownika. Czy ktoś może podać jakieś dane wejściowe? – Pratik