Сценарий:
- Я получил 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 загружал файлы на устройство?