Не работает менеджер загрузок

Я пытаюсь разработать приложение, которое показывает видео, и вы можете загрузить его. Я использую класс Download Manager, но это не сработало, и это не дало мне никаких ошибок :(

это мой код менеджера загрузки:

    public void downloadFileFromUrl(String url, String fileName) {

        String filePath=Environment.getExternalStorageDirectory() + File.separator + "BlueNet";

        File folder = new File(filePath);

        if (!folder.exists()) {
            folder.mkdirs();
        }

        try {

        Uri downloadUri = Uri.parse(url);
        DownloadManager.Request request = new DownloadManager.Request(downloadUri);

        request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
        request.allowScanningByMediaScanner();

        request.setDestinationInExternalPublicDir("/BlueNet/",fileName);
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        request.setVisibleInDownloadsUi(true);
        DownloadManager downloadManager = (DownloadManager)getApplicationContext().getSystemService(DOWNLOAD_SERVICE);
        long id= downloadManager.enqueue(request);
            Toast.makeText(this, fileName, Toast.LENGTH_LONG).show();
            Toast.makeText(this, filePath, Toast.LENGTH_LONG).show();

        }

        catch (Exception ex){
            Toast.makeText(this, ex.toString(), Toast.LENGTH_LONG).show();
        }
    }

и вот как я это называю

downloadFileFromUrl(path, fileName);

куда:

путь: "192.168.1.5:8080/BlueNet_NMC/blue_elephant.mp4"

имя файла: "blue_elephant.mp4"

и я уже даю эти разрешения манифестам

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

поэтому, пожалуйста, помогите


person M.Honi    schedule 06.05.2016    source источник
comment
Вы пробовали /BlueNet вместо /BlueNet/? Кроме того, насколько мне известно, нет необходимости проверять, существует ли эта папка, DownloadManager сделает это за вас.   -  person Grender    schedule 07.05.2016
comment
хорошо я удаляю проверить крутой   -  person M.Honi    schedule 07.05.2016
comment
Пробовали ли вы загрузить изображение или что-то из Интернета вместо файла из вашей локальной сети?   -  person Grender    schedule 07.05.2016
comment
нет, но когда я вставлю ссылку в браузер, я смогу ее скачать   -  person M.Honi    schedule 07.05.2016
comment
Просто попробуйте и скажите мне, если это работает.   -  person Grender    schedule 07.05.2016
comment
OMG, он работает со ссылкой из Интернета, так в чем проблема и другая проблема, что стрелка загрузки не появляется   -  person M.Honi    schedule 07.05.2016
comment
DownloadManager обрабатывает только запросы http/https. Странно, что должна появиться стрелка загрузки, попробуйте запретить проверку медиасканером или попробуйте другой Visibility.   -  person Grender    schedule 07.05.2016
comment
но моя ссылка тоже http://192.168.1.5:8080/BlueNet_NMC/video_share/blue_elephant.mp4   -  person M.Honi    schedule 07.05.2016
comment
Я сделал пробел между http и 192, чтобы вы могли его видеть   -  person M.Honi    schedule 07.05.2016
comment
Возможно, он не использует протокол HTTP для передачи файла в вашей локальной сети. Какой сервер вы используете?   -  person Grender    schedule 07.05.2016
comment
я использую wamp-сервер на своем ноутбуке   -  person M.Honi    schedule 07.05.2016
comment
Поэтому я точно не знаю, почему он не работает с вашим URL-адресом локальной сети, я должен проверить больше вещей, но я думаю, что это обычная проблема.   -  person Grender    schedule 07.05.2016
comment
хорошо, пожалуйста, поставьте свой ответ, чтобы отметить его как верный ответ, спасибо :)   -  person M.Honi    schedule 07.05.2016
comment
@M.Honi Я думаю, что Download Manager поддерживает HTTPS, взгляните на это (хотя я все еще пытаюсь успешно загрузить изображение таким образом, но на данный момент я занимаюсь этим всего несколько часов)   -  person DarkCygnus    schedule 22.05.2018
comment
он загружается, но, в конце концов, его не удается загрузить. файл не существует в указанном каталоге.   -  person Ashish Patel    schedule 10.08.2019


Ответы (4)


Как я сказал в комментариях, DownloadManager обрабатывает только запросы, начинающиеся с http:// или https://, как вы можете видеть в документах.

Я не знаю точно, в чем проблема, потому что мне не хватает информации о вашем сервере, но я думаю, что это распространенная проблема, поэтому вам следует избегать использования IP-адреса без предоставления этой схемы.

person Grender    schedule 06.05.2016
comment
Извините, что противоречу, но похоже, что HTTPS действительно поддерживается. Взгляните на эту ссылку. , где указывают: Uri: the HTTP or HTTPS URI to download. - person DarkCygnus; 22.05.2018
comment
Я не хотел этого говорить, я обновил свой ответ, чтобы отразить то, что хотел сказать. Спасибо, что указали на это, @DarkCygnus! - person Grender; 22.05.2018

У меня возникла проблема при загрузке файлов с URL-адресом HTTP с использованием класса DownloadManger; но затем я сделал следующее, и проблема была исправлена.

Вместо этого кода:

String url = "http://masteranime.ir/music/best/Dragon Ball GT Dan Dan Kokoro Hikareteku.mp3";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

используйте этот код:

String url = "http://masteranime.ir/music/best/Dragon Ball GT Dan Dan Kokoro Hikareteku.mp3";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url).replaceAll(" ","%20"));
person Tohid Noori    schedule 20.12.2020

У вас проблема в этой строке - request.setDestinationInExternalPublicDir("/BlueNet/",fileName);

Просто удалите эту строку или создайте каталог другим способом.

person Savej Saifi    schedule 17.10.2020

request.setDestinationInExternalPublicDir("/BlueNet/", fileName);

Здесь вы должны указать каталог в качестве первого аргумента. /BlueNet/ не является каталогом.

person A.Shah    schedule 15.01.2021
comment
Это не дает ответа на вопрос. Получив достаточную репутацию, вы сможете /comment">прокомментировать любой пост; вместо этого дайте ответы которые не требуют разъяснений от спрашивающего. – Из обзора - person Andrii Omelchenko; 15.01.2021