diff --git a/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java b/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java index 35602ba1e..870fdb20e 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java +++ b/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java @@ -164,6 +164,7 @@ public class InstalledAppProviderService extends IntentService { * @see cachedInfo = InstalledAppProvider.Helper.all(context); List packageInfoList = context.getPackageManager() diff --git a/app/src/main/java/org/fdroid/fdroid/receiver/PackageManagerReceiver.java b/app/src/main/java/org/fdroid/fdroid/receiver/PackageManagerReceiver.java index d9c44b19c..3bda33bf4 100644 --- a/app/src/main/java/org/fdroid/fdroid/receiver/PackageManagerReceiver.java +++ b/app/src/main/java/org/fdroid/fdroid/receiver/PackageManagerReceiver.java @@ -3,6 +3,7 @@ package org.fdroid.fdroid.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.text.TextUtils; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.InstalledAppProviderService; @@ -26,7 +27,11 @@ public class PackageManagerReceiver extends BroadcastReceiver { if (Intent.ACTION_PACKAGE_ADDED.equals(action)) { InstalledAppProviderService.insert(context, intent.getData()); } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) { - InstalledAppProviderService.delete(context, intent.getData()); + if (TextUtils.equals(context.getPackageName(), intent.getData().getSchemeSpecificPart())) { + Utils.debugLog(TAG, "Ignoring request to remove ourselves from cache."); + } else { + InstalledAppProviderService.delete(context, intent.getData()); + } } else { Utils.debugLog(TAG, "unsupported action: " + action + " " + intent); }