From ed3b17738cd6043f1c1c4b44ebfcad1730a5c09d Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Wed, 10 Apr 2019 13:10:30 +0200 Subject: [PATCH] remove the activity dependency when downloading pdf --- .../amkotlinutil/managers/DownloadManager.kt | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/amkotlinutil/src/main/java/dk/adaptmobile/amkotlinutil/managers/DownloadManager.kt b/amkotlinutil/src/main/java/dk/adaptmobile/amkotlinutil/managers/DownloadManager.kt index ac99d77..b66b664 100644 --- a/amkotlinutil/src/main/java/dk/adaptmobile/amkotlinutil/managers/DownloadManager.kt +++ b/amkotlinutil/src/main/java/dk/adaptmobile/amkotlinutil/managers/DownloadManager.kt @@ -1,7 +1,7 @@ package dk.adaptmobile.amkotlinutil.managers import android.Manifest -import android.app.Activity +import android.annotation.SuppressLint import android.app.DownloadManager import android.content.BroadcastReceiver import android.content.Context @@ -14,7 +14,19 @@ import androidx.annotation.RequiresPermission /** * @author Jason Kelly */ +@SuppressLint("StaticFieldLeak") object DownloadManager { + private lateinit var applicationContext: Context + private lateinit var downloadManager: DownloadManager + + /** + * This will initialize the download manager with the specified + * application context + */ + fun init(context: Context) { + downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager + this.applicationContext = context + } /** * This downloads a file using the build in download manager @@ -22,8 +34,7 @@ object DownloadManager { * With the appropriate file URI and mimeType */ @RequiresPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) - fun downloadFile(activity: Activity, url: String, downloadRequest: (DownloadManager.Request.() -> Unit)? = null, onComplete: ((uri: Uri, mimeType: String) -> Unit)? = null) { - val downloadManager = activity.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager + fun downloadFile(url: String, downloadRequest: (DownloadManager.Request.() -> Unit)? = null, onComplete: ((uri: Uri, mimeType: String) -> Unit)? = null) { val request = DownloadManager.Request(Uri.parse(url)) downloadRequest?.let { request.it() } @@ -42,11 +53,11 @@ object DownloadManager { onComplete?.invoke(downloadManager.getUriForDownloadedFile(downloadId), downloadManager.getMimeTypeForDownloadedFile(downloadId)) // Unregister when download finishes - activity.unregisterReceiver(this) + context?.unregisterReceiver(this) } } } - activity.registerReceiver(broadcastReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) + applicationContext.registerReceiver(broadcastReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) } }