как получить имя файла, чтобы поместить его в файл загрузчика в Webview DownloadListener - PullRequest
0 голосов
/ 27 мая 2020

У меня есть приложение для просмотра веб-страниц, и оно предназначено для моего локального веб-сайта. Итак ..

Когда я нажимаю ссылку для загрузки любого файла, он загружает его, но с именем «имя файла», точно таким, как я выбираю это в моем коде!.

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

Пожалуйста, отредактируйте мой код и вставьте его для меня, потому что я Я начинаю программировать android.

Это мой код DownloadListener

Всем спасибо ^ _ ^.

webview.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url,String userAgent,String contentDisposition,String type,long contentLength) {
                DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "File Name");
                DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                if (manager != null) {
                    manager.enqueue(request);
                    Toast.makeText(getApplicationContext(), "بدأ التحميل ...", Toast.LENGTH_LONG).show();
                }
            }
        });

    }

Ответы [ 3 ]

1 голос
/ 27 мая 2020

Если это Get url. Имя файла будет концом url.

Если это метод POST. имя файла будет согласовано в заголовке ответа.

надеюсь вам помочь.

1 голос
/ 27 мая 2020

Вы пытались установить имя файла в заголовке Content-Disposition? https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

Что-то вроде request.addRequestHeader("Content-Disposition", "attachment; filename=\"filename.txt\"");

0 голосов
/ 27 мая 2020

Я нахожу код, который делает то, что мне нужно, Благодарю за каждого

Надеюсь кому-нибудь помочь.

webview.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
                DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

                request.setMimeType(mimeType);
                //------------------------COOKIE!!------------------------
                String cookies = CookieManager.getInstance().getCookie(url);
                request.addRequestHeader("cookie", cookies);
                //------------------------COOKIE!!------------------------
                request.addRequestHeader("User-Agent", userAgent);
                request.setDescription("بدأ تحميل الملف...");
                request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType));
                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimeType));
                DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                dm.enqueue(request);
                Toast.makeText(getApplicationContext(), "بدأ تحميل الملف...", Toast.LENGTH_LONG).show();
            }
        });
...