package org.fdroid.fdroid.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.InstalledAppProviderService; /** * Receive {@link Intent#ACTION_PACKAGE_ADDED} and {@link Intent#ACTION_PACKAGE_REMOVED} * events from {@link android.content.pm.PackageManager} to keep * {@link org.fdroid.fdroid.data.InstalledAppProvider} updated. This ignores * {@link Intent#EXTRA_REPLACING} and instead handles updates by just deleting then * inserting the app being updated in direct response to the {@code Intent}s from * the system. This is also necessary because there are no other checks to prevent * multiple copies of the same app being inserted into {@Link InstalledAppProvider}. */ public class PackageManagerReceiver extends BroadcastReceiver { private static final String TAG = "PackageManagerReceiver"; @Override public void onReceive(Context context, Intent intent) { if (intent != null) { String action = intent.getAction(); 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()); } else { Utils.debugLog(TAG, "unsupported action: " + action + " " + intent); } } } }