我正在制作一个电子书阅读器,它使用 epub 格式将书籍加载到网络视图中。
在某些书中,有指向同一章中某些部分的锚链接。每一章都以 html 形式加载。这就是链接的样子
file:///storage/sdcard0/Android/data/com.abc.reader/files/Download/498935/epub/resources/498935/OEBPS/#footnote-165093-1-backlink
我尝试使用shouldOverrideUrlLoading()
方法来获取回调,但它没有被调用,当我按下链接时onPageFinished
网址显示为about:blank
reader.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.w("TESTTESTOVERRIDE "+url);
view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
// after the data has been loaded, the following is executed
// TODO Auto-generated method stub
super.onPageFinished(view, url);
System.out.println("check.... onPageFinishedEntered.."
+ url.toString());
view.loadUrl(jsfileloadurl);
}
有任何想法吗?
编辑:在 4.1 设备中,我正确获得了锚链接,但在 4.4 或 5.0 中,它是关于:空白。 (在两种情况下shouldOverrideUrlLoading
不被调用)
我还没有以编程方式对此进行测试,但我相信您面临这个问题,因为 OS 4.4 之后 webview 的工作方式发生了重大变化。你应该检查这个链接https://developer.android.com/guide/webapps/migration.html#URLs
在“自定义 Url 处理”部分下,它表示不会对无效 url 调用 shouldOverrideUrlLoading()。理想情况下, file:// 应被视为有效的 url,但似乎这里没有发生。
一种可能的解决方案是使用 loadDataWithBaseURL 加载主要 webview 内容
并提供 baseurl 作为一些测试 url,例如http://mytestap.testurl,它将保证 shouldOverrideUrlLoading 将始终被调用。下一步您需要删除前缀 'http://mytestap.testurl' 如果存在于 shouldOverrideUrlLoading 回调中接收到的 url 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)