Create DownloadCompleteReceiver.kt

This commit is contained in:
MNCHL 2023-12-26 23:17:44 +08:00 committed by GitHub
parent 752e58d84e
commit 412d0b331d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -0,0 +1,30 @@
import android.app.DownloadManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.database.Cursor
import android.net.Uri
import android.os.Environment
import androidx.core.content.FileProvider
import java.io.File
class DownloadCompleteReceiver(private val downloadId: Long, private val onDownloadComplete: (Uri?) -> Unit) : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE == intent?.action) {
val downloadManager = context?.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
val query = DownloadManager.Query().setFilterById(downloadId)
val cursor: Cursor = downloadManager.query(query)
if (cursor.moveToFirst()) {
val columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)
if (DownloadManager.STATUS_SUCCESSFUL == cursor.getInt(columnIndex)) {
val uri = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))
val downloadedFile = File(Uri.parse(uri).path)
onDownloadComplete(Uri.fromFile(downloadedFile))
}
}
cursor.close()
}
}
}