Обработка разрешений на загрузку файлов WebView и времени выполнения

Когда я нажимаю кнопку в WebView , он должен загрузить PDF-файл, который будет сохранен во внешнем хранилище.

Для этого я устанавливаю DownloadListener :

 webview.setDownloadListener(new DownloadHandler()); public class DownloadHandler implements 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.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, getFileName(url)); DownloadManager dm = (DownloadManager)getContext().getSystemService(getContext().DOWNLOAD_SERVICE); dm.enqueue(request); } } 

Проблема возникает при попытке сделать это на Android M, где все разрешения задаются во время выполнения.

Как я должен сначала спросить разрешения перед запуском загрузки и продолжить или нет с загрузкой в ​​зависимости от того, были ли они предоставлены?

URL-адреса URL-адресов загрузки shouldInterceptRequest shouldOverrideUrlLoading shouldInterceptRequest не shouldOverrideUrlLoading , поэтому я даже не знаю, как я могу отменить запрос для проверки разрешений в первую очередь.

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