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

1

Код диспетчера загрузки не работает в 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();
        }
    });
Теги:
android-download-manager

2 ответа

0
Лучший ответ

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

ПРИМЕЧАНИЕ: код был выполнен фрагментом, для основного действия удалите 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

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

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

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

  • 0
    У меня нет метаданных в моем манифесте, но спасибо, я нашел решение
  • 0
    Можете ли вы отмахнуться от решения, пожалуйста?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню