一个work around方法:解决Android 3.0~4.0上WebView 对锚点链接不支持的bug
Android应用将一些html文件放在工程内的assets目录下,通过WebView去显示这些html文件,
简单地打开一个html文件是正常的。但是如果在一个html里点击一个链接,该链接指向另一个html里的一个锚位置,会出现错误,提示不可用。
"The webpage at file:///android_asset/other_file.html#fragment
might...."
在 http://code.google.com/p/android/issues/detail?id=17327 里有很热闹的讨论。
以上问题在Android4.0上出现,网上有反映3.0上也有,经实测在4.1上已修正。
如何在Android 4.0手机上修正此问题呢,一个work around方案如下:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("erik", "loadUrl ,url = " + url);
view.loadUrl(url);
return true;
}
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
if(failingUrl.contains("#")){
Log.d("erik", "failingurl = " + failingUrl);
String[] temp;
temp = failingUrl.split("#");
view.loadUrl(temp[0]); // load page without internal
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
view.goBack();
view.goBack();
}
}
});