diff --git a/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadTask.kt b/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadTask.kt index ed3da7f4..b07ac219 100644 --- a/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadTask.kt +++ b/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadTask.kt @@ -9,7 +9,7 @@ data class DownloadTask( var filename: String?, var savedDir: String, var headers: String, - var mimeType: String, + var mimeType: String?, var resumable: Boolean, var showNotification: Boolean, var openFileFromNotification: Boolean, diff --git a/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadWorker.kt b/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadWorker.kt index 94bd5c47..06ae79c3 100644 --- a/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadWorker.kt +++ b/android/src/main/kotlin/vn/hunghd/flutterdownloader/DownloadWorker.kt @@ -338,12 +338,14 @@ class DownloadWorker(context: Context, params: WorkerParameters) : break } httpConn!!.connect() - val contentType: String + val contentType: String? if ((responseCode == HttpURLConnection.HTTP_OK || isResume && responseCode == HttpURLConnection.HTTP_PARTIAL) && !isStopped) { contentType = httpConn.contentType val contentLength: Long = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) httpConn.contentLengthLong else httpConn.contentLength.toLong() - log("Content-Type = $contentType") + if (contentType != null) { + log("Content-Type = $contentType") + } log("Content-Length = $contentLength") val charset = getCharsetFromContentType(contentType) log("Charset = $charset") @@ -517,7 +519,7 @@ class DownloadWorker(context: Context, params: WorkerParameters) : * Create a file inside the Download folder using MediaStore API */ @RequiresApi(Build.VERSION_CODES.Q) - private fun createFileInPublicDownloadsDir(filename: String?, mimeType: String): Uri? { + private fun createFileInPublicDownloadsDir(filename: String?, mimeType: String?): Uri? { val collection: Uri = MediaStore.Downloads.EXTERNAL_CONTENT_URI val values = ContentValues() values.put(MediaStore.Downloads.DISPLAY_NAME, filename) @@ -770,7 +772,7 @@ class DownloadWorker(context: Context, params: WorkerParameters) : return contentType?.split(";")?.toTypedArray()?.get(0)?.trim { it <= ' ' } } - private fun isImageOrVideoFile(contentType: String): Boolean { + private fun isImageOrVideoFile(contentType: String?): Boolean { val newContentType = getContentTypeWithoutCharset(contentType) return newContentType != null && (newContentType.startsWith("image/") || newContentType.startsWith("video")) } diff --git a/android/src/main/kotlin/vn/hunghd/flutterdownloader/TaskDao.kt b/android/src/main/kotlin/vn/hunghd/flutterdownloader/TaskDao.kt index 6bb7a8a9..7e862826 100644 --- a/android/src/main/kotlin/vn/hunghd/flutterdownloader/TaskDao.kt +++ b/android/src/main/kotlin/vn/hunghd/flutterdownloader/TaskDao.kt @@ -199,7 +199,7 @@ class TaskDao(private val dbHelper: TaskDbHelper) { val db = dbHelper.writableDatabase val values = ContentValues() values.put(TaskEntry.COLUMN_NAME_FILE_NAME, filename) - values.put(TaskEntry.COLUMN_NAME_MIME_TYPE, mimeType) + values.put(TaskEntry.COLUMN_NAME_MIME_TYPE, mimeType ?: "unknown") db.beginTransaction() try { db.update(