一个work around方法:解决Android 3.0~4.0上WebView 对锚点链接不支持的bug

本文提供了一个在Android4.0手机上修正WebView加载内链HTML文件出现错误的workaround方案,通过自定义WebViewClient来处理内部链接加载问题,确保页面能够正常加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();

}

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值