关于android webview无法加载某些网页的问题

问题描述

关于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.

通过shouldOverrideUrlLoading()发现是停在了url01 = "http://touch.qunar.com/h5/client?bd_source=qunar&sScheme=1&scheme=9ba0d4a5501039c836e0f6ebd7591c3cdf530395e34774be803ca3aa5d8d7dd88a02757808b6c1c6cf3f26d9ce1cd8ec05b834242f9351b5674022a6b1ddd80321513c4706534d3ecf860b477cba454f9bc8b8a24199014dcf0e0c55b043c59da223a9b7937d7a90faa3980a0f1a9beb&&touchUrl=07737b01eb30307696066ff6b81aca935b2362db0ffb49a258bde88c1a8127593d1cbefcc0030f26e07ca2f9779c8032d6c9007716f223f86bcf7827adcbf75338c54427e4af0fefee17b587016d37688f362ad03e4878224bbaa6d677412a4c85e51c8e3ef5e8fce831c87cb21211fbd87b34d525e49a52e8312ac777636b0f"; 

用浏览器打开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加载的问题...

时间: 2024-11-16 16:52:28

关于android webview无法加载某些网页的问题的相关文章

webview加载html网页如何缩小至屏幕大小

问题描述 webview加载html网页如何缩小至屏幕大小 需要用webview加载一个html页面,但是显示在手机上时太大,而且还可以左右滑动,怎么样让它缩小至整个屏幕大小. 解决方案 WebView如何加载HTML网页webView加载指定的网页 加载解析的HTML 解决方案二: http://www.zhihu.com/question/20038590/answer/16789331

android webview加载的网页里面的验证码无法显示

问题描述 android webview加载的网页里面的验证码无法显示 android webview加载的网页里面的验证码无法显示,即网页里面注册信息的验证码无法显示

html-Android中webview加载的网页上的按钮点击失效

问题描述 Android中webview加载的网页上的按钮点击失效 android中的webview加载的html,在同一个设备上,设备自带浏览器打开网页,上面按钮失效,使用android中的webview打开网页失效,使用google浏览器就可以,有什么方法可以在android中的webview也可以使用这个按钮的功能 解决方案 你是否设置websetting,设置js可用之类的设置 解决方案二: 开启js支持什么的了吗? webview.getSettings().setJavaScript

android可否直接调用flash player播放swf文件,而不用webview去加载

问题描述 android可否直接调用flash player播放swf文件,而不用webview去加载 调用的方法如下 public boolean openFlash(String path){ Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString(Define.OPEN_MODE, Define.NORMAL); //打开模式 bundle.putBoolean(Define.SEND_CLO

Android自带的webview中加载支付宝成功后没有回调,只停留在了支付宝支付成功页面

问题描述 Android自带的webview中加载支付宝成功后没有回调,只停留在了支付宝支付成功页面 我用Android自带的webview中加载支付宝页面去支付,在js里也配置了回调的return_url,为啥收不着回调呢?只是返回支付宝支付成功的链接,然后就停在支付宝支付完成的页面了. 程序里也设置了这个setJavaScriptEnabled(true); public boolean shouldOverrideUrlLoading(WebView view, String url),在

Android仿美团加载数据、小人奔跑进度动画对话框(附顺丰快递员奔跑效果)

我们都知道在Android中,常见的动画模式有两种:一种是帧动画(Frame Animation),一种是补间动画(Tween Animation).帧动画是提供了一种逐帧播放图片的动画方式,播放事先做好的图像,与gif图片原理类似,就像是在放电影一样.补间动画可以实现View组件的移动.放大.缩小以及渐变等效果.      今天我们主要来模仿一下美团中加载数据时小人奔跑动画的对话框效果,取个有趣的名字就是Running Man,奔跑吧,兄弟!话不多少,先上效果图,让各位大侠看看是不是你想要实现

Android编程动态加载布局实例详解【附demo源码】_Android

本文实例讲述了Android编程动态加载布局的方法.分享给大家供大家参考,具体如下: 由于前段时间项目需要,需要在一个页面上加载根据不同的按钮加载不同的布局页面,当时想到用 tabhot .不过美工提供的界面图完全用不上tabhot ,所以想到了动态加载的方法来解决这一需求.在这里我整理了一下,写了一个 DEMO 希望大家以后少走点弯路. 首先,我们先把界面的框架图画出来,示意图如下: 中间白色部门是一个线性布局文件,我喜欢在画图的时候用不同的颜色将一块布局标示出来,方便查看.布局文件代码如下:

Android中如何加载数据缓存_Android

最近app快完工了,但是很多列表加载,新闻咨询等数据一直从网络请求,速度很慢,影响用户体验,所以寻思用缓存来加载一些更新要求不太高的数据 首先做一个保存缓存的工具类 import java.io.File; import java.io.IOException; import android.content.Context; import android.os.Environment; import android.util.Log; /** * 缓存工具类 */ public class Co

VB 如何对webbrowse加载的网页中的alert()弹出的对框自动点击(或回车)?

问题描述 VB 如何对webbrowse加载的网页中的alert()弹出的对框自动点击(或回车)? 用VB写程序遇到 一麻烦,想清您帮助. 这是网页代码: //每播放隔二十分钟提示并暂停播放 if (secondIndex%1200 == 0 && CanPause && secondIndex != 0) { doSelectPlay(); ClickPause(); //alert("您已经持续观看本视频" + secondIndex + "