Динамический URL-адрес PDF отображается как «Предварительный просмотр недоступен» в WebView.Android

Форум для тех, кто программирует под Android
Anonymous
Динамический URL-адрес PDF отображается как «Предварительный просмотр недоступен» в WebView.

Сообщение Anonymous »

Только после посещения почти всех ссылок Stack Overflow для получения одного и того же ответа я был вынужден написать это:

Я пытаюсь отобразить PDF-файл в WebView< /код>. Я знаю, что WebView не поддерживает обычное отображение PDF, поэтому я использую расширение URL-адреса G-Drive, предложенное в других ответах. Кроме того, бизнес-команда потребовала открыть PDF-файл в самом нашем приложении, чтобы я не мог отправить намерение в другое средство просмотра PDF-файлов. Я скачал библиотеку PdfViewer, но она увеличила размер APK настолько, насколько хотелось.

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

URL PDF-файла:

"http://server_ip_number/pata/retail/v4/reports_pdf ?search=Test&min_amount=0.0&max_amount=0.0" (невозможно раскрыть IP-адрес по соображениям безопасности)

Этот запрос также требует некоторых заголовков для аутентификации, которые Подробно напишу ниже.

Это то, чем я сейчас занимаюсь;

Код: Выделить всё

class AllUsersWebViewActivity : BaseActivity() {

private val pdfActualUrl = "https://drive.google.com/viewerng/viewer?embedded=true&url=http://server_ip_number/pata/retail/v4/reports_pdf?search=Test&min_amount=0.0&max_amount=0.0"

//This random dummy URL opens perfectly, it does not need any headers or GET params, just normal `loadUrl()` works.
private val workingDummyUrl = "https://drive.google.com/viewerng/viewer?embedded=true&url=https://mindorks.s3.ap-south-1.amazonaws.com/courses/MindOrks_Android_Online_Professional_Course-Syllabus.pdf"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_all_users_report_web_view)
wv_web.settings.javaScriptEnabled = true
wv_web.clearCache(true)
wv_web.loadUrl(URLEncoder.encode(pdfUrl, "ISO-8859-1"), mapOf( //map of necessary headers
"Authorization" to "Auth_TOKEN",
"VersionId" to "1.0.0",
"companyID" to "2",
"DeviceId" to "my_device_id",
"token" to "SECURE_TOKEN"
))
}
ПРИМЕЧАНИЕ.

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

Но когда я пробую это с помощью WebView, он просто показывает: «Предварительный просмотр недоступен».

Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/619 ... in-webview

Вернуться в «Android»