From 2d4850c0e8c19a0bd203d74b316cc926de33c72a Mon Sep 17 00:00:00 2001 From: egor-white Date: Tue, 8 Jul 2025 17:31:00 +0300 Subject: [PATCH] add Updater.kt mediastore if sdk < 30 --- .../java/com/cherret/zaprett/utils/Updater.kt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/cherret/zaprett/utils/Updater.kt b/app/src/main/java/com/cherret/zaprett/utils/Updater.kt index 3a13caf..35ef91d 100644 --- a/app/src/main/java/com/cherret/zaprett/utils/Updater.kt +++ b/app/src/main/java/com/cherret/zaprett/utils/Updater.kt @@ -3,13 +3,16 @@ package com.cherret.zaprett.utils import android.annotation.SuppressLint import android.app.DownloadManager import android.content.BroadcastReceiver +import android.content.ContentValues import android.content.Context import android.content.Intent import android.content.IntentFilter import android.net.Uri import android.os.Build import android.os.Environment +import android.provider.MediaStore import android.provider.Settings +import android.util.Log import androidx.core.content.ContextCompat import androidx.core.content.FileProvider import androidx.core.net.toUri @@ -78,7 +81,22 @@ fun download(context: Context, url: String): Long { setTitle(fileName) setDescription(fileName) setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) - setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName) + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) { + val contentValues = ContentValues().apply { + put(MediaStore.Downloads.DISPLAY_NAME, fileName) + put(MediaStore.Downloads.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS) + } + val uri = context.contentResolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues) + if (uri != null) { + setDestinationUri(uri) + } else { + Log.e("Updater", "Failed to create MediaStore URI") + return -1L + } + } else { + setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName) + } + setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE) } return downloadManager.enqueue(request)