diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/DownloadCompleteReceiver.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/DownloadCompleteReceiver.kt new file mode 100644 index 000000000..328d9960e --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/DownloadCompleteReceiver.kt @@ -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() + } + } +}