From e085e0392bfb5b476ab114382663a7ca7fd5ce4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 23 Oct 2015 13:20:22 +0200 Subject: [PATCH] PackageReceiver: Only fetch the one PackageInfo We were fetching information on all installed packages and doing a linear search. Which is silly and inefficient since we can directly fetch information on a single installed package by id. --- .../org/fdroid/fdroid/receiver/PackageReceiver.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/F-Droid/src/org/fdroid/fdroid/receiver/PackageReceiver.java b/F-Droid/src/org/fdroid/fdroid/receiver/PackageReceiver.java index 367b34538..55cf84595 100644 --- a/F-Droid/src/org/fdroid/fdroid/receiver/PackageReceiver.java +++ b/F-Droid/src/org/fdroid/fdroid/receiver/PackageReceiver.java @@ -23,6 +23,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.ApkProvider; @@ -37,12 +38,13 @@ abstract class PackageReceiver extends BroadcastReceiver { protected abstract void handle(Context context, String appId); protected PackageInfo getPackageInfo(Context context, String appId) { - for (PackageInfo info : context.getPackageManager().getInstalledPackages(0)) { - if (info.packageName.equals(appId)) { - return info; - } + PackageInfo info = null; + try { + info = context.getPackageManager().getPackageInfo(appId, 0); + } catch (PackageManager.NameNotFoundException e) { + // ignore } - return null; + return info; } @Override