mWebView!!.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return true
}
override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse? {
return super.shouldInterceptRequest(view, request)
}
override fun shouldInterceptRequest(view: WebView, url: String): WebResourceResponse? {
if (url.startsWith("https://mp.weixin.qq.com/s")) {
val res = replaceCss(url, view.context)
val input: InputStream = ByteArrayInputStream(res.toByteArray())
return WebResourceResponse("text/html", "utf-8", input)
}
return super.shouldInterceptRequest(view, url)
}
}
}
private val rex = "(<style>)([\\S ]*)(</style>)"
private fun replaceCss(url: String, context: Context): String {
val pattern = Pattern.compile(rex)
val m = pattern.matcher(url)
if (m.find()) {
try {
val css = getString(context.assets.open("weixin/weixin.css"))
val sb = StringBuilder()
sb.append(m.group(1))
sb.append(css)
sb.append(m.group(3))
return url.replace(rex.toRegex(), sb.toString())
} catch (e: IOException) {
e.printStackTrace()
}
}
return url
}