public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.contains(".pdf")) {
String[] spliturl = url.split("http://someurl/");
String googleurl = "http://docs.google.com/viewer?embedded=true&url=";
System.out.println("Google Url"+googleurl);
System.out.println("spliturl"+spliturl[1]);
view.loadUrl(googleurl+spliturl[1]);
}
else
view.loadUrl(url);
return true;
}
});
我正在分割网址,因为它包含多个要在Google文档查看器上传递的网址以呈现pdf文档。 第一次正确拆分网址并将网址连接到谷歌文档中打开,但是webview通过在spliturl [1]处给出一个ArrayIndexOutOfBoundsException再次执行。 有谁能让我知道为什么再次执行。 感谢。
答案 0 :(得分:2)
我不知道为什么会多次调用它,但解决方案是在onPageStarted而不是在shouldOverrideUrlLoading中处理它
boolean calledOnce=false;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (url.contains(".pdf") && !calledOnce) {
String[] spliturl = url.split("http://someurl/");
String googleurl = "http://docs.google.com/viewer?embedded=true&url=";
System.out.println("Google Url"+googleurl);
System.out.println("spliturl"+spliturl[1]);
url = googleurl+spliturl[1];
calledOnce = true;
}
super.onPageStarted(view, url, favicon);
}
答案 1 :(得分:1)
您应该始终检查数组的大小是否超过请求的索引:
if (url.contains(".pdf") && url.split("http://someurl/").size()>2){
// your code
}
不知道为什么会被调用 - 可能是多次重定向。