Я пытался исправить это весь день. Я пытаюсь отобразить различные PDF-файлы, сохраненные в Интернете, в веб-представлении с помощью диска Google, чтобы он загружал страницу за страницей, но не загружал его локально.
Всякий раз, когда я go загружаю в веб-представление для загрузки pdf это обычно работает, но после каждой пары попыток я получаю следующую ошибку:
"Uncaught CustomError: Did not receive drive#about kind when fetching import map:undefined", source: https://www.gstatic.com/_/apps-viewer/_/js/k=apps-viewer.standalone.iw.nPmJUigVjYY.O/d=1/ct=zgms/rs=AC2dHMJ5W67xChDpdTOaSavkSV5aN0BM8g/m=main (92)
[INFO:CONSOLE(92)] "Uncaught [object Object]", source: https://www.gstatic.com/_/apps-viewer/_/js/k=apps-viewer.standalone.iw.nPmJUigVjYY.O/d=1/ct=zgms/rs=AC2dHMJ5W67xChDpdTOaSavkSV5aN0BM8g/m=main (92)
Я пытался выяснить, что является причиной этого в течение всего дня, но мне не удалось это исправить. Любые идеи, что может быть причиной / как я могу это исправить?
Я кодирую это приложение, используя kotlin, вот фрагмент, который я использую для отображения PDF, он получает URL-адрес PDF из базы данных, Сам URL не является проблематичным c.
class WebViewPdf : Fragment() {
lateinit var webView: WebView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
if (pdfLoadingPanel != null) {
pdfLoadingPanel.visibility = View.GONE
}
var view = inflater.inflate(com.madortilofficialapps.tilquiz.R.layout.fragment_pdf_view, container, false)
webView = view.findViewById(
com.madortilofficialapps.tilquiz.R.id.webView) as WebView
var googleDocs = "https://docs.google.com/viewer?embedded=true&url="
val url = arguments!!.getString("url")
webView.invalidate()
webView.settings.javaScriptEnabled = true
webView.settings.setSupportZoom(true)
webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null)
webView.settings.domStorageEnabled = true
var didLoadPDF = false
Log.d("LKJLKHLKHLHLKHLHKLH","Starting")
webView.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
Log.d("lkhnjlkjlkj", "Loading")
if (pdfLoadingPanel != null) {
pdfLoadingPanel.visibility = View.VISIBLE
}
didLoadPDF = true
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
if(!didLoadPDF){
webView.loadUrl(googleDocs + url)
}else {
Log.d("dagfagaga", "Finished loading")
if (pdfLoadingPanel != null) {
pdfLoadingPanel.visibility = View.GONE
}
if(webView.title == ""){
webView.reload()
}
}
}
}
webView.loadUrl(googleDocs + url)
return view
}
override fun onPause() {
super.onPause()
webView.clearCache(true)
webView.getSettings().setAppCacheEnabled(false);
activity?.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
}
override fun onDestroyView() {
super.onDestroyView()
webView.destroy()
}
override fun onResume() {
super.onResume()
activity?.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR)
}
РЕДАКТИРОВАТЬ: мне удалось это исправить, вот как для людей с этой проблемой в будущем. По сути, я отладил webView.Title и обнаружил, что всякий раз, когда он выдает ошибку, заголовок был не тем, что я хотел. продолжая это, я обнаружил, что по какой-то причине, хотя переменная url была val, она менялась после каждого раза, добавляя переменную googleDocs в начало, и становилась что-то вроде этого: "https://docs.google.com/viewer?embedded=true&url=https: // docs.google.com/viewer?embedded=true&url=https://docs.google.com/viewer?embedded=true&url=example.pdf ", поэтому я добавил добавление googleDocs в URL в начале программы, перед тем как запустить веб-просмотр, а затем загружать его только сам по себе, даже если веб-приложение сначала не загружалось и пыталось загрузить его рекурсивно, URL-адрес не увеличивался.