Скачать PDF-файл с Blob Url в Android WebView - PullRequest
0 голосов
/ 11 сентября 2018

Сценарий:

  • Я получил API RestFul, который генерирует PDF-файлы
  • Я использую этот API для загрузки PDF-файлов в веб-приложениях и прекрасно работает
  • Теперь я хочу открыть это веб-приложение в веб-представлении в приложении для Android, чтобы загрузить эти же файлы

Проблема в том, что я делаю нечто подобное, чтобы иметь возможность управлять загрузками веб-просмотра:

webview.settings.javaScriptEnabled = true
webview.settings.domStorageEnabled = true

webview.setDownloadListener { url, userAgent, contentDisposition, mimeType, _ ->
    val subpath = "/download" + "/" + "test" + ".pdf"
    val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
    val request = DownloadManager.Request(Uri.parse(formatUri(url)))
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
    request.setAllowedOverRoaming(false)
    request.setVisibleInDownloadsUi(true)
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, subpath)
    downloadManager.enqueue(request)            
}

Но, конечно, это не сработает, поскольку url , который возвращает, не является "нормальным" Uri, как:

https://test.com/your-pdf-file.pdf

Вместо этого он больше похож на это:

blob: https://test.com/d335cd66-b3f2-4fd5-b16f-asbca22dfc38

Веб-браузер может работать с такого родаURL, но веб-просмотра нет.

Как сделать так, чтобы веб-браузер Android загружал файлы на устройство?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...