@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
((CustomWebView) view).resetLoadedUrl();
if(url != null ){
if(url.contains("?method=search¶meter=")){//比如要判断url中是否包括"?method=search¶meter="字符,就截取获取"?method=search¶meter="后面的文字
int length = "?method=search¶meter=".length();
int index = url.indexOf("?method=search¶meter=");
url = URLDecoder.decode(url);//数据转码
String keyWord = url.substring(index+length);//截取操作
Bundle bundle = new Bundle();
bundle.putString("categoryName", keyWord);
mMainActivity.showActivity(activity, XX.class,bundle);//把截取到的数据传入到指定页面中
return true;
}else
//TODO
return true;
}
}
return false;
}
开始没有加入上面红色文字,结果截取到的字符是一串由%和字母等组成的一长串字符,并非我想要的中文汉字,后来加入红色文字,就获取到了想要的字符,如“联想电脑”。
今天查了下java的api,了解了一下URLDecoder这个类:
HTML 格式解码的实用工具类。该类包含了将 String 从 application/x-www-form-urlencoded MIME 格式解码的静态方法。
该转换过程正好与 URLEncoder 类使用的过程相反。假定已编码的字符串中的所有字符为下列之一:"a" 到 "z"、"A" 到 "Z"、"0" 到 "9" 和 "-"、"_"、"." 以及 "*"。允许有 "%" 字符,但是将它解释为特殊转义序列的开始。
转换中使用以下规则:
该解码器处理非法字符串有两种可能的方法。一种方法是不管该非法字符,另一种方法是抛出 IllegalArgumentException 异常。解码器具体采用哪种方法取决于实现。现在主要用的方法是:
decode(String s, String enc) 使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。解码后才能获取到我们想要的正确数据。
与URLDecoder的类是URLEncoder:该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式。主要方法:encode(String s, String enc) 使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
下次遇到这样的问题就知道怎么解决了。
版权声明:本文为博主原创文章,未经博主允许不得转载。