Android: загрузка в веб-представлении не работает в oreo, она принудительно закрывается на устройствах Oreo - PullRequest
0 голосов
/ 02 ноября 2018

Код менеджера загрузок не работает в Android WebView для устройств Oreo, но хорошо работает для более старых версий В случае, отличном от устройств Oreo, он запускает «скачивание файла» и загружается, но в случае Oreo принудительно закрывается (сбой)

Ниже приведен код, который я использую (фрагмент)

 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.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimetype));
            request.allowScanningByMediaScanner();
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!

            DownloadManager dm = (DownloadManager) getActivity().getSystemService(DOWNLOAD_SERVICE);
            dm.enqueue(request);
            Toast.makeText(getActivity().getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                    Toast.LENGTH_LONG).show();
        }
    });

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Это код, который я понял и работает для меня.

ПРИМЕЧАНИЕ: код был выполнен фрагментом, для основного действия удалить getActivity(). в манифесте дать разрешение

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Учебное пособие для получения разрешения

КОД:

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));
            if(Build.VERSION.SDK_INT <= 26 ){
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimetype));
            }
            request.allowScanningByMediaScanner();
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!

            DownloadManager dm = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
            dm.enqueue(request);
            Toast.makeText(getActivity().getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                    Toast.LENGTH_LONG).show();


        }



    });
0 голосов
/ 02 ноября 2018

Попробуйте удалить предварительную загрузку шрифтов, удалив

<meta-data 
android:name="preloaded_fonts" 
android:resource="@array/preloaded_fonts" />  

Источник Webview в Oreo не работает

...