【发布时间】:2019-11-26 04:15:47
【问题描述】:
我有一个在浏览器上显示 PDF 的 URL,我创建了一个 WebView,但它没有显示 pdf。
我已经为WebView 和WebViewClient 提供了所有设置,但是ProgressBar 刚刚启动并且没有加载pdf。
class KnowledgeShareWebview : AppCompatActivity() {
lateinit var webView: WebView
lateinit var progressBar: ProgressBar
var url = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_knowledge_share_webview)
webView = findViewById(R.id.webView)
progressBar = findViewById(R.id.progressBar)
if (intent != null) {
url = intent.getStringExtra("url")
}
Helper.printMessege(KnowledgeShareWebview::class.java.simpleName, "url....$url")
initWebView()
webView.loadUrl(url)
}
private fun initWebView() {
webView.settings.loadWithOverviewMode = true
webView.settings.useWideViewPort = true
webView.clearCache(true)
webView.clearHistory()
webView.settings.javaScriptEnabled = true
webView.settings.useWideViewPort = true
webView.isHorizontalScrollBarEnabled = false
webView.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView, url: String, favicon: Bitmap) {
super.onPageStarted(view, url, favicon)
progressBar.visibility = View.VISIBLE
}
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
webView.loadUrl(url)
return super.shouldOverrideUrlLoading(view, url)
}
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
progressBar.visibility = View.GONE
invalidateOptionsMenu()
}
override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) {
super.onReceivedError(view, request, error)
progressBar.visibility = View.GONE
}
}
}
}
【问题讨论】:
-
你能显示你想加载的网址吗?
-
@AnasMehar 抱歉我无法显示,但它是一个普通的 pdf 网址
-
WebView没有显示 PDF 的内置功能。它支持 Web 内容(HTML、CSS、JavaScript),而不是任意其他类型的文件。工作时,您可以usepdf.js渲染 PDF。或者,use other options for rendering PDFs.