hottabxp
@hottabxp
Сначала мы жили бедно, а потом нас обокрали..

Почему не качается файл в Android с помощью DownloadManager?

Вот код:
try {
                    DownloadManager dm;

                    dm = (DownloadManager)getApplicationContext().getSystemService(DOWNLOAD_SERVICE);
                    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(DOWNLOAD_URL));
                    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
                            .setAllowedOverRoaming(false)
                            .setTitle("Download")
                            .setDestinationInExternalPublicDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath()
                                    ,"file.jpg");

                    Log.d("DEBUG", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() );
                   dm.enqueue(request);


                }catch (Exception e){
                    Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
                }

Разрешения все получены, но файл не качается:
61ebc29bd7d9c210047635.png
Logcat:
E/ActivityThread: Service com.android.providers.downloads.DownloadJobService has leaked IntentReceiver com.android.providers.downloads.DownloadReceiver@1ebc5cc that was originally registered here. Are you missing a call to unregisterReceiver()?
    android.app.IntentReceiverLeaked: Service com.android.providers.downloads.DownloadJobService has leaked IntentReceiver com.android.providers.downloads.DownloadReceiver@1ebc5cc that was originally registered here. Are you missing a call to unregisterReceiver()?
        at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:1355)
        at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1134)
        at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1421)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1394)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1382)
        at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:609)
        at addon.sprd.downloadprovider.AddonDownloadsDRMUtils.notifyDownloadCompleted(AddonDownloadsDRMUtils.java:302)
        at com.android.providers.downloads.DownloadThread.run(DownloadThread.java:504)

Весь Google перерыл, но везде одни и те же примеры. На SO у всех работает, правда ответы 2017-2019 годов, а я вижу, что с каждым годом гугл всё усложняет разработку приложений.
Я думал, что DownloadManager должен упрощать загрузку файлов, но видимо - нет.
Так почему в данный момент данный пример не работает? Может есть ли у кого минимальный рабочий пример? Или лучше забросить этот "менеджер", и использовать OkHttp?
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
hottabxp
@hottabxp Автор вопроса
Сначала мы жили бедно, а потом нас обокрали..
Более 10 часов убил на поиск и решение проблемы. Оказалось, это - Are you missing a call to unregisterReceiver()? вообще никаким боком не относится к проблеме. Проблема заключалась в наличие блокировщика рекламы Blokada(работает в качестве локального vpn сервера). И что самое интересное, Blokada показывает все хосты, к которым обращается Android и другие приложения.(при условии, что приложение обращается к http/https), даже если они в списке блокировки. Но при запуске моего приложения, она просто молчала. Наверное баг блокировщика.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
... has leaked IntentReceiver ... Are you missing a call to unregisterReceiver()?

Бродкаст рецейвер вешали ? А снять забыли !
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы