From 8307015d8dafd290d60f9a6fbb4b87aff6a16ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Wed, 21 Oct 2015 23:29:45 +0200 Subject: [PATCH] Don't use DownloadManager if it was disabled Fixes #442. --- .../fdroid/net/AsyncDownloaderFromAndroid.java | 4 ++++ .../org/fdroid/fdroid/net/DownloaderFactory.java | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloaderFromAndroid.java b/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloaderFromAndroid.java index 2b91ad704..0cfef0d19 100644 --- a/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloaderFromAndroid.java +++ b/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloaderFromAndroid.java @@ -294,6 +294,10 @@ public class AsyncDownloaderFromAndroid implements AsyncDownloader { DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); DownloadManager.Query query = new DownloadManager.Query(); Cursor c = dm.query(query); + if (c == null) { + // TODO: same as above. + return -1; + } int columnUniqueDownloadId = c.getColumnIndex(DownloadManager.COLUMN_DESCRIPTION); int columnId = c.getColumnIndex(DownloadManager.COLUMN_ID); diff --git a/F-Droid/src/org/fdroid/fdroid/net/DownloaderFactory.java b/F-Droid/src/org/fdroid/fdroid/net/DownloaderFactory.java index 2572c92a1..39af3bd4c 100644 --- a/F-Droid/src/org/fdroid/fdroid/net/DownloaderFactory.java +++ b/F-Droid/src/org/fdroid/fdroid/net/DownloaderFactory.java @@ -1,6 +1,8 @@ package org.fdroid.fdroid.net; +import android.app.DownloadManager; import android.content.Context; +import android.database.Cursor; import android.os.Build; import org.fdroid.fdroid.Utils; @@ -75,7 +77,19 @@ public class DownloaderFactory { } private static boolean hasDownloadManager(Context context) { - return context.getSystemService(Context.DOWNLOAD_SERVICE) != null; + DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); + if (dm == null) { + // Service was not found + return false; + } + DownloadManager.Query query = new DownloadManager.Query(); + Cursor c = dm.query(query); + if (c == null) { + // Download Manager was disabled + return false; + } + c.close(); + return true; } /**