diff --git a/app/src/main/java/com/cherret/zaprett/ui/viewmodel/BaseRepoViewModel.kt b/app/src/main/java/com/cherret/zaprett/ui/viewmodel/BaseRepoViewModel.kt index 0d148e6..5d96019 100644 --- a/app/src/main/java/com/cherret/zaprett/ui/viewmodel/BaseRepoViewModel.kt +++ b/app/src/main/java/com/cherret/zaprett/ui/viewmodel/BaseRepoViewModel.kt @@ -16,7 +16,7 @@ import com.cherret.zaprett.utils.download import com.cherret.zaprett.utils.getFileSha256 import com.cherret.zaprett.utils.getHostListMode import com.cherret.zaprett.utils.getZaprettPath -import com.cherret.zaprett.utils.registerDownloadListenerHost +import com.cherret.zaprett.utils.registerDownloadListener import com.cherret.zaprett.utils.restartService import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow @@ -93,7 +93,7 @@ abstract class BaseRepoViewModel(application: Application) : AndroidViewModel(ap fun install(item: RepoItemInfo) { isInstalling[item.name] = true val downloadId = download(context, item.url) - registerDownloadListenerHost(context, downloadId, { uri -> + registerDownloadListener(context, downloadId, { uri -> viewModelScope.launch(Dispatchers.IO) { val sourceFile = File(uri.path!!) val targetDir = when (item.type) { @@ -120,7 +120,7 @@ abstract class BaseRepoViewModel(application: Application) : AndroidViewModel(ap fun update(item: RepoItemInfo) { isUpdateInstalling[item.name] = true val downloadId = download(context, item.url) - registerDownloadListenerHost( + registerDownloadListener( context, downloadId, onDownloaded = { uri -> diff --git a/app/src/main/java/com/cherret/zaprett/ui/viewmodel/HomeViewModel.kt b/app/src/main/java/com/cherret/zaprett/ui/viewmodel/HomeViewModel.kt index 15b564d..03a9739 100644 --- a/app/src/main/java/com/cherret/zaprett/ui/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/cherret/zaprett/ui/viewmodel/HomeViewModel.kt @@ -226,9 +226,12 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) { showUpdateDialog.value = false if (context.packageManager.canRequestPackageInstalls()){ val id = download(context, downloadUrl.value.orEmpty()) - registerDownloadListener(context, id) { uri -> + registerDownloadListener(context, id, { uri -> installApk(context, uri) - } + }, + onError = { + + }) } else { val packageUri = Uri.fromParts("package", context.packageName, null) diff --git a/app/src/main/java/com/cherret/zaprett/utils/RepositoryDownloader.kt b/app/src/main/java/com/cherret/zaprett/utils/RepositoryDownloader.kt index d76275b..9237e42 100644 --- a/app/src/main/java/com/cherret/zaprett/utils/RepositoryDownloader.kt +++ b/app/src/main/java/com/cherret/zaprett/utils/RepositoryDownloader.kt @@ -69,7 +69,7 @@ fun getRepo(url: String, callback: (Result>) -> Unit) { }) } -fun registerDownloadListenerHost(context: Context, downloadId: Long, onDownloaded: (Uri) -> Unit, onError: (String) -> Unit) {// AI Generated +fun registerDownloadListener(context: Context, downloadId: Long, onDownloaded: (Uri) -> Unit, onError: (String) -> Unit) {// AI Generated val receiver = object : BroadcastReceiver() { @SuppressLint("Range") override fun onReceive(context: Context?, intent: Intent?) { 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 cf060af..89f5565 100644 --- a/app/src/main/java/com/cherret/zaprett/utils/Updater.kt +++ b/app/src/main/java/com/cherret/zaprett/utils/Updater.kt @@ -95,30 +95,6 @@ fun installApk(context: Context, uri: Uri) { context.startActivity(intent) } } - -fun registerDownloadListener(context: Context, downloadId: Long, onDownloaded: (Uri) -> Unit) {// AI Generated - val receiver = object : BroadcastReceiver() { - @SuppressLint("Range") - override fun onReceive(context: Context?, intent: Intent?) { - if (intent?.action != DownloadManager.ACTION_DOWNLOAD_COMPLETE) return - if (intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1) != downloadId) return - val downloadManager = context?.getSystemService(Context.DOWNLOAD_SERVICE) as? DownloadManager ?: return - downloadManager.query(DownloadManager.Query().setFilterById(downloadId)).use { cursor -> - if (cursor.moveToFirst() && cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL) { - context.unregisterReceiver(this) - onDownloaded(cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)).toUri()) - } - } - } - } - val intentFilter = IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - context.registerReceiver(receiver, intentFilter, Context.RECEIVER_EXPORTED) - } else { - ContextCompat.registerReceiver(context, receiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), ContextCompat.RECEIVER_EXPORTED) - } -} - @Serializable data class UpdateInfo( val version: String?,