解决了,给我很多“帮助”这个答案,因为它真的是一个讨厌的 webview 错误,我认为我的回答会对你们很多人有帮助!
如果您的 html 页面确实包含“%”、“\”或“#”字符之一,则 loadData() 方法将失败!因此,您必须手动替换这些 chr,这是我的课程:
public class BuglessWebView extends WebView{
public BuglessWebView(Context context) {
super(context);
}
public BuglessWebView(Context context,AttributeSet attributes){
super(context,attributes);
}
public BuglessWebView(Context context,AttributeSet attributes,int defStyles){
super(context,attributes,defStyles);
}
@Override
public void loadData(String data, String mimeType, String encoding) {
super.loadData(solveBug(data), mimeType, encoding);
}
private String solveBug(String data){
StringBuilder sb = new StringBuilder(data.length()+100);
char[] dataChars = data.toCharArray();
for(int i=0;i<dataChars.length;i++){
char ch = data.charAt(i);
switch(ch){
case '%':
sb.append("%25");
break;
case '\'':
sb.append("%27");
break;
case '#':
sb.append("%23");
break;
default:
sb.append(ch);
break;
}
}
return sb.toString();
}
}
这是关于谷歌代码的讨论链接: http ://code.google.com/p/android/issues/detail?id=1733