Android 下载管理器延迟并且总是不成功

问题描述 投票:0回答:1

所以,我正在尝试为我的应用程序实现下载 pdf 功能。这是我启动下载管理器的代码。

val document = documents[i]
val request = DownloadManager.Request(Uri.parse("https://repository.bsi.ac.id/repo/files/256149/download/File_8-Bab-I-Pengenalan-Android.pdf"))
                .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI)
                .setTitle("Downloading Pdf-Android")
                .setMimeType("application/pdf")
                .setDescription("File Description")
                .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
                .setDestinationInExternalPublicDir(
                    Environment.DIRECTORY_DOWNLOADS,
                    "Pdf-Android.pdf"
                )
downloadManager.enqueue(request)

经过相当长的一段时间后,下载启动但立即失败,并且我无法真正调试它,因为 logcat 没有显示任何内容。我尝试将允许的网络类型设置为celluar,并授予写入外部文件的权限。

android kotlin android-download-manager
1个回答
0
投票

您可以通过这种方式手动调试。我相信您可能遇到某种不受信任的证书问题。

val downloadId = downloadManager.enqueue(request)

Log.i("DownloadManager", "started")

val query = DownloadManager.Query().setFilterById(downloadId)
val cursor = downloadManager.query(query)

if (cursor.moveToFirst()) {
    try {
        val columnStatusIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)
        val columnReasonIndex = cursor.getColumnIndex(DownloadManager.COLUMN_REASON)

        val status = cursor.getInt(columnStatusIndex)

        if (status == DownloadManager.STATUS_SUCCESSFUL) {
            Log.i("DownloadManager", "Download successful")
        } else if (status == DownloadManager.STATUS_FAILED) {
            val reason = cursor.getInt(columnReasonIndex)
            Log.e("DownloadManager", "Download failed: $reason")
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.