From 151c83218c7ab016c51380ae8bd1369d1c39473c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 10 May 2017 13:24:20 +0200 Subject: [PATCH] do not crash if there are no cached APKs closes #1012 --- .../fdroid/fdroid/AppUpdateStatusService.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java index 76e2eb2a4..e6b821099 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java +++ b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java @@ -44,11 +44,22 @@ public class AppUpdateStatusService extends IntentService { @Override protected void onHandleIntent(@Nullable Intent intent) { Utils.debugLog(TAG, "Scanning apk cache to see if we need to prompt the user to install any apks."); - List apksReadyToInstall = new ArrayList<>(); File cacheDir = ApkCache.getApkCacheDir(this); - for (String repoDirName : cacheDir.list()) { + if (cacheDir == null) { + return; + } + String[] cacheDirList = cacheDir.list(); + if (cacheDirList == null) { + return; + } + List apksReadyToInstall = new ArrayList<>(); + for (String repoDirName : cacheDirList) { File repoDir = new File(cacheDir, repoDirName); - for (String apkFileName : repoDir.list()) { + String[] apks = repoDir.list(); + if (apks == null) { + continue; + } + for (String apkFileName : apks) { Apk apk = processDownloadedApk(new File(repoDir, apkFileName)); if (apk != null) { Log.i(TAG, "Found downloaded apk " + apk.packageName + ". Notifying user that it should be installed.");