Android DownloadManager всегда возвращает 404 - PullRequest
1 голос
/ 07 марта 2019

Пытаюсь использовать сервис DownloadManager для Android, но всегда получаю 404 в качестве причины.Вот код, который ставит в очередь запрос:

val downloadManager = applicationContext.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
                val request = DownloadManager.Request(uri)

                request.setAllowedOverRoaming(true)
                request.setAllowedOverMetered(true)
                request.setVisibleInDownloadsUi(false)
                request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);

                //TODO : do we need to wait here ??
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    ActivityCompat.requestPermissions(baseSessionActivity, arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE), 0);
                }


                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS , File(absoluteURL).name)

                headers?.forEach { pair ->
                    request.addRequestHeader(pair.first, pair.second)
                }

                return downloadManager.enqueue(request)

, а затем вот код, который считывает статус после того, как я получил намерение ACTION_DOWNLOAD_COMPLETE:

    val query = DownloadManager.Query() 
query.setFilterById(downloadId) 
val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager 
val cursor = downloadManager.query(query) 

cursor?.let { 
if (cursor.moveToFirst()) { 
var reasonIndex = cursor.getColumnIndex(DownloadManager.COLUMN_REASON) 
var reason = cursor.getInt(reasonIndex) 
var status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))

Я не вижуфайл на диске, так что 404 правильно.Пожалуйста, дайте мне знать, если что-то не так в моем коде.Спасибо

...