问题描述
- 关于android webview无法加载某些网页的问题
-
网址是去哪儿的:http://touch.qunar.com/h5/train/trainList?startStation=%E6%B7%B1%E5%9C%B3&endStation=%E5%B9%BF%E5%B7%9E&searchType=stasta&sort=3
用webview直接loadUrl()会一直停在"正在跳转"界面,如图:
webSettings.setJavaScriptEnabled(true);
设置允许执行js后则出现如下界面:
百度了一下qunaraphone,了解到:
5、Schema
schema是native同学提供的全局调用方式,业务可以通过schema来呼起另一个业务。
前端可以直接用location.href= 的形式,访问这个schema,并调起相应功能。这里要注意的是,暂时有三种schema头,qunariphone://
(去哪儿IOS客户端)、qunariphonepro:// (去哪儿IOS pro客户端)、qunaraphone://
(去哪儿安卓客户端)。前端需要通过userAgent,判断是哪个客户端,来调用不同头的schema。(userAgent中有相应的keyword。)==
不知道这跟webview有什么关系,要怎么弄才能正常访问呢?还有不允许执行js时访问新浪网会提示需要开启js,开启后就能正常访问,但淘宝网是一直都访问不了,一点反应都没有...
解决方案
应该是服务器端写的不健全,看现象是服务器在执行trainList查询的时候,读取了客户端传过来的wakeup属性值,没有wakeup属性值服务器解析出现问题
此网页不可以 http://touch.qunar.com/h5/train/trainList
此网页可以 http://touch.qunar.com/h5/train/trainList?wakeup=1
解决方案二:
下面代码是可以正常显示的
WebView webView = (WebView)findViewById(R.id.webview);
//webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
/* webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
Log.i("","加载完成");
} else {
// 加载中
Log.i("","加载中...");
}
}
});
*/
//webView.loadUrl("http://baidu.com");
webView.loadUrl("http://touch.qunar.com/h5/train/trainList?startStation=%E6%B7%B1%E5%9C%B3&endStation=%E5%B9%BF%E5%B7%9E&searchType=stasta&sort=3");
解决方案三:
Android WebView 加载网页
Android之WebView加载网页
android使用webview加载网页
解决方案四:
@rvncds
log里没有看到"The key "shrink-to-fit" is not recognized and ignored.
用浏览器打开url01会跳转到url02 = "http://touch.qunar.com/h5/train/trainList?startStation=%E6%B7%B1%E5%9C%B3&endStation=%E5%B9%BF%E5%B7%9E&searchType=stasta&date=&sort=3&wakeup=1"; 这个比之前的网址多了"&date=&wakeup=1",用webview能正常访问.
应该是url01加载的问题...