试图在线显示pdf';在android应用程序(使用kotlin)中,使用google drive的webview偶尔会产生错误

试图在线显示pdf';在android应用程序(使用kotlin)中,使用google drive的webview偶尔会产生错误,android,android-studio,kotlin,webview,google-drive-api,Android,Android Studio,Kotlin,Webview,Google Drive Api,我一整天都在努力解决这个问题。我试图用谷歌硬盘在网络视图上显示在线保存的各种pdf文件,这样它可以一页一页地加载,但不会在本地下载 每当我进入webview加载pdf时,它通常都会工作,但每两次尝试,我就会出现以下错误: "Uncaught CustomError: Did not receive drive#about kind when fetching import map:undefined", source: https://www.gstatic.com/_/apps-viewer/

我一整天都在努力解决这个问题。我试图用谷歌硬盘在网络视图上显示在线保存的各种pdf文件,这样它可以一页一页地加载,但不会在本地下载

每当我进入webview加载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的片段,它从数据库中获取一个PDF url,url本身没有问题

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变量添加到它的开头,变成这样:“,所以我做的是在程序开始时,在启动webView之前,将googleDocs添加到url,然后只加载url本身,这样一来,即使webView一开始没有加载,然后再次尝试递归加载,URL也不会增长。

也有同样的问题。对我来说唯一有效的解决方案就是尝试加载它,加载次数可以根据需要而定。有时它甚至需要10倍lol。@xinaiz有没有一种方法可以通过编程识别它是否没有正确加载,这样我就可以通过程序重新加载它,而无需用户加载它?既然你已经解决了它,你应该发布一个带有解决方案的答案,并在24小时后接受:)