请问如何监听页面中的资源已经加载完毕呢?
提前把页面加载玩然后显示出来,但是onpagerfinish回调的时候资源加载不一定完成了,想问一下,你是怎么处理的呢?
目前这个没有啥好办法,不同浏览器内核对onpagerfinish 调用时机也不同,建议业务上不要太依赖onpagerfinish了
目前这个没有啥好办法,不同浏览器内核对onpagerfinish 调用时机也不同,建议业务上不要太依赖onpagerfinish了
好吧,谢谢了,还有个问题 我想在shouldInterceptRequest 方法中把页面中的视频替换为我本地缓存的视频,但是发现在Android 8.1 上可以,在Android4.4和Android5.1上不行,请问你有什么好的办法么?
4.4和5.1是报什么错误了?
4.4和5.1是报什么错误了?
没有报错,但是H5播放的任然的video 标签中src的视频, 而不是本地缓存的
` @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Nullable @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { LogUtils.d(Thread.currentThread().getName() + " +++++++++++++++++++Start+++++++++++++++++++"); LogUtils.d(request.getRequestHeaders()); LogUtils.d(request.getUrl().toString());
LogUtils.d(Thread.currentThread().getName() + " ++++++++++++++++END++++++++++++++++++++++");
if (request.getUrl().toString().endsWith("mp4")) {
try {
return new WebResourceResponse(MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(request.getUrl().toString())), "UTF-8", new FileInputStream(getFilesDir().getAbsolutePath() + File.separator + "test.mp4"));
} catch (IOException e) {
e.printStackTrace();
}
}
if (request.getUrl().toString().endsWith("jpg")) {
try {
return new WebResourceResponse(MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(request.getUrl().toString())), "UTF-8", new FileInputStream(getFilesDir().getAbsolutePath() + File.separator + "temp.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
return super.shouldInterceptRequest(view, request);
}
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
LogUtils.d(url);
if (url.endsWith("mp4")) {
try {
WebResourceResponse webResourceResponse = new WebResourceResponse(MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(url)), "UTF-8", new FileInputStream(getFilesDir().getAbsolutePath() + File.separator + "test.mp4"));
return webResourceResponse;
} catch (IOException e) {
e.printStackTrace();
}
}
if (url.endsWith("jpg")) {
try {
return new WebResourceResponse(MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(url)), "UTF-8", new FileInputStream(getFilesDir().getAbsolutePath() + File.separator + "temp.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
return WebViewCacheInterceptorInst.getInstance().interceptRequest(url);
}`
这是拦截请求的写法
你看看webview Console 有啥信息没,还有把http请求和返回header打印出来看看,我猜可能和gzip有关吧
你看看webview Console 有啥信息没,还有把http请求和返回header打印出来看看,我猜可能和gzip有关吧
并没有,MP4的请求似乎不是经过原生这边的,低版本上,webresponse 是空的
你说的webresponse 是空的是啥意思?
你说的webresponse 是空的是啥意思?
就是在shouldInterceptRequest中WebResourceResponse 是空的 ,自己构造的话不生效
好吧,那这个问题和webview版本有关系,建议你看看webview video gzip方面,看能有啥突破口没