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; } /**