Пытаюсь использовать сервис 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 правильно.Пожалуйста, дайте мне знать, если что-то не так в моем коде.Спасибо