diff --git a/app/src/main/java/com/oqba26/monthlypaymentapp/utils/UpdateManager.kt b/app/src/main/java/com/oqba26/monthlypaymentapp/utils/UpdateManager.kt index 7b59d6e..847cbf0 100644 --- a/app/src/main/java/com/oqba26/monthlypaymentapp/utils/UpdateManager.kt +++ b/app/src/main/java/com/oqba26/monthlypaymentapp/utils/UpdateManager.kt @@ -1,6 +1,7 @@ @file:OptIn(InternalSerializationApi::class) package com.oqba26.monthlypaymentapp.utils +import android.app.DownloadManager import android.content.Context import android.content.Intent import android.net.ConnectivityManager @@ -58,6 +59,7 @@ class UpdateManager(private val context: Context) { } suspend fun checkForUpdate(): UpdateInfo? = withContext(Dispatchers.IO) { + cancelPendingSystemDownloads() if (!isNetworkAvailable()) return@withContext null try { @@ -162,6 +164,32 @@ class UpdateManager(private val context: Context) { } } + fun cancelPendingSystemDownloads() { + try { + val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as? DownloadManager ?: return + val query = DownloadManager.Query() + val cursor = downloadManager.query(query) + if (cursor != null) { + val idIndex = cursor.getColumnIndex(DownloadManager.COLUMN_ID) + val titleIndex = cursor.getColumnIndex(DownloadManager.COLUMN_TITLE) + val statusIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS) + while (cursor.moveToNext()) { + if (idIndex != -1) { + val id = cursor.getLong(idIndex) + val title = if (titleIndex != -1) cursor.getString(titleIndex) ?: "" else "" + val status = if (statusIndex != -1) cursor.getInt(statusIndex) else -1 + if (title.contains("به‌روزرسانی") || title.contains("MonthlyPaymentApp") || status == DownloadManager.STATUS_FAILED) { + downloadManager.remove(id) + } + } + } + cursor.close() + } + } catch (e: Exception) { + e.printStackTrace() + } + } + private fun isNetworkAvailable(): Boolean { val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val network = connectivityManager.activeNetwork ?: return false