From fe891b2765dee2cbae03fbe1bbfa44287726baea Mon Sep 17 00:00:00 2001 From: Oqba Date: Mon, 21 Sep 2026 18:57:32 +0330 Subject: [PATCH] =?UTF-8?q?=D9=BE=D8=A7=DA=A9=D8=B3=D8=A7=D8=B2=DB=8C=20?= =?UTF-8?q?=D8=AF=D8=B1=D8=AE=D9=88=D8=A7=D8=B3=D8=AA=E2=80=8C=D9=87=D8=A7?= =?UTF-8?q?=DB=8C=20=D9=85=D8=A7=D9=86=D8=AF=D9=87=20=D8=AF=D8=B1=20=D8=B3?= =?UTF-8?q?=DB=8C=D8=B3=D8=AA=D9=85=20DownloadManager=20=D9=87=D9=86=DA=AF?= =?UTF-8?q?=D8=A7=D9=85=20=D8=A7=D8=AC=D8=B1=D8=A7=DB=8C=20=D8=A8=D8=B1?= =?UTF-8?q?=D9=86=D8=A7=D9=85=D9=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monthlypaymentapp/utils/UpdateManager.kt | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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