DownloadManager не работает на Android 8.0

DownloadManager не работает на Android 8.0. Не знаю почему. Кто-нибудь может мне помочь?

Вот что я пробовал:

val downloadBroadcastReceiver = DownloadBroadcastReceiver()
context.registerReceiver(downloadBroadcastReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
request = DownloadManager.Request(Uri.parse(url))
val mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(folder + File.separator + fileName))
request.setMimeType(mimeType)
request.setDestinationInExternalFilesDir(context, Environment.DIRECTORY_DOWNLOADS, fileName)
request.setTitle(title)
request.setDescription(description)
request.setNotificationVisibility(VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
request.allowScanningByMediaScanner()
id = downloadManager.enqueue(request)

person Zheng    schedule 20.10.2017    source источник
comment
проверьте это stackoverflow.com/a/48130822/1333975   -  person Ahmad    schedule 06.01.2018
comment
@Ahmad не применяется. В этом вопросе проблема OP в том, что он устанавливает DownloadManager.Request.NETWORK_WIFI, тогда как здесь это не так.   -  person Nicu Surdu    schedule 22.02.2018
comment
У меня такая же проблема.   -  person Mahdi    schedule 22.04.2018
comment
мне то же самое. Помоги мне, пожалуйста   -  person le Mandarin    schedule 27.07.2018


Ответы (2)


Убедитесь, что на телефоне не включены какие-либо приложения VPN. В моем случае у меня было приложение для блокировки рекламы, работающее как VPN на телефоне, которое мешало DownloadManager.

person Nicu Surdu    schedule 22.02.2018

Вы можете сузить круг проблем, которые у вас возникли, проверив статус внутри DownloadManager. Если загрузка не начинается, вероятно, она приостановлена.

 try (Cursor cursor = manager.query(query)) {
                if (cursor.moveToFirst()) {
                    int statusColumn = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS);
                    int downloadStatus = cursor.getInt(statusColumn);
                    if (DownloadManager.STATUS_PAUSED == downloadStatus) {
                        int reasonColumn =   cursor.getColumnIndex(DownloadManager.COLUMN_REASON);
                        int reasonCode = cursor.getInt(reasonColumn);
                        Log.e(TAG, "Download paused: " + reasonCode);
                    } else if (DownloadManager.STATUS_SUCCESSFUL == downloadStatus
                            || DownloadManager.STATUS_FAILED == downloadStatus) {
                        Log.i(TAG, "Download Ended");
                    }
}

Оттуда проблема зависит от того, что вы видите в приведенном выше блоке, но вот некоторые распространенные случаи, которые у вас могут быть:

Если ваш URL-адрес использует https: //, возможно, у вас возникла эта проблема - https://stackoverflow.com/questions/41430496/why-are-https-downloads-pausing-with-paused-waiting-to-retry

Если ваш URL-адрес использует http: //, но не на Android 9, вы можете увидеть следующее: HTTP-трафик в открытом виде на 192.168.1.2 не разрешен

Если ваш URL-адрес http: // на Android 9, вы увидите следующее: Как решить проблему остановки Android P DownloadManager с запрещенным HTTP-трафиком Cleartext на 127.0.0.1? Что, к сожалению, вызвано этой ошибкой Google - https://issuetracker.google.com/issues/114143692. И единственный способ обойти это - предоставить альтернативу https :.

person Kabliz    schedule 27.11.2018