试图在线显示pdf';在android应用程序(使用kotlin)中,使用google drive的webview偶尔会产生错误
我一整天都在努力解决这个问题。我试图用谷歌硬盘在网络视图上显示在线保存的各种pdf文件,这样它可以一页一页地加载,但不会在本地下载 每当我进入webview加载pdf时,它通常都会工作,但每两次尝试,我就会出现以下错误:试图在线显示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/
"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小时后接受:)