我正在将html文件加载到WebView中,并希望覆盖WebView对<head>
中的样式表**<link>
和<image>
**元素的请求,以便可以从计算机加载文件
html中的链接是这样的
<head>
<link href="../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<svg width="100%" height="100%" viewBox="0 0 352 500>
<image width="352" height="500" xlink:href="image.jpeg"/>
</svg>
</body>
我有一个包含此代码的WebViewClient,但它们都没有向这些链接发出请求。shouldInterceptRequest和onLoadResource都只接收request?.url
的整个html文件
class EpubWebViewClient(): WebViewClient() {
override fun onLoadResource(view: WebView?, url: String?) {
Log.i("loadurl", "onLoadResource $url")
super.onLoadResource(view, url)
}
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
Log.i("loadurl", "shouldOverrideUrlLoading ${request?.url}")
return super.shouldOverrideUrlLoading(view, request)
}
override fun shouldInterceptRequest(
view: WebView?,
request: WebResourceRequest?
): WebResourceResponse? {
Log.i("loadurl", "shouldInterceptRequest ${request?.url}")
return super.shouldInterceptRequest(view, request)
}
}
我想象有一个类似的函数,但可能没有idk
override fun idealUrlOverloadFunction(url: String): String or something else {
return openLocalFile(url)
}
WebView或WebViewClient甚至会对这些内容发出请求吗?
如果是这样的话,我如何中断它们并从机器而不是Web加载资源?
1条答案
按热度按时间hts6caw31#
由我解决,考虑这个链接
<link href="../stylesheet.css" rel="stylesheet" type="text/css"/>
附加一些'string +:'组合键,例如
<link href="mystuff:../stylesheet.css" rel="stylesheet" type="text/css"/>
将导致它显示在shouldInterceptRequest()中
我不确定这是否是由于链接未启动或shouldInterceptRequest未侦听造成的,但可以使用
.replace
轻松修复