如何在Android WebView中启用打印功能



我在我的应用程序中打开WebView,在网站中导航后,用户到达一个带有打印按钮的页面"点击打印";它可以打印用户所在的页面。它在移动设备上的Chrome中运行良好,并打开PDF进行打印,然而,在WebView中,点击按钮似乎什么都不做。

我的问题是,有没有办法让这个按钮触发打印作业?

我尝试了这样的方法,它可以很好地触发打印作业,但当点击按钮时不会,而且我无法访问按钮的JS onClick方法来覆盖应用程序。

private fun createWebPrintJob(webView: WebView) {
val printManager = this@Activity
.getSystemService(PRINT_SERVICE) as PrintManager
val jobName = "Test Doc"
val printAdapter = webView.createPrintDocumentAdapter(jobName)
val printJob: PrintJob = printManager.print(
jobName, printAdapter,
PrintAttributes.Builder().build()
)
printJobs.add(printJob)
}

关于如何让WebView的行为与Chrome相同,有什么想法吗?

您必须创建一个自定义WebViewClient((类,并在其中覆盖shouldOverrideUrlLoading(view:WebView?,request:WebResourceRequest(,并设置一个标记,例如"打印";用于按钮的操作,并在shouldOverrideUrlLoad((方法内设置if语句。

private val mWebViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
if (request?.url.toString() == "print"){
doPrint()
return false
}
}
}
webView.webViewClient = mWebViewClient

最新更新